{
 "cells": [
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "# Develop Your First MPC-Application"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "> The following codes are demos only. It’s NOT for production due to system security concerns, please DO NOT use it directly in production."
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "This is an introductory secretflow tutorial that contains:\n",
    "\n",
    "* Implement a simple algorithm and run it in plaintext as baseline.\n",
    "* Use simulator to check the **precision loss** and try to fix it.\n",
    "* Run elaborated emulations to give reports on both **efficiency and correctness**.\n",
    "\n",
    "We **highly recommend** the reader to read [spu-quickstart](../tutorials/quick_start.ipynb) before continuing read this tutorial, which you can learn some basic usage of Device, DeviceObject and how to run program in secret."
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "## Part 0: Prepare the environment and dataset\n",
    "1. Environment: To run this tutorial, you should have spu installed in your environment(if not, you can refer to [this](https://www.secretflow.org.cn/docs/spu/en/getting_started/install.html)).\n",
    "2. Dataset: We use the breast cancer wisconsin dataset, which can be obtained from sklearn. And we just do simple minmax transform for preprocessing"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "from sklearn.datasets import load_breast_cancer\n",
    "from sklearn.preprocessing import MinMaxScaler\n",
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "X, y = load_breast_cancer(return_X_y=True, as_frame=True)\n",
    "# normally, LR works only when the features have been normalized!\n",
    "scalar = MinMaxScaler(feature_range=(-2, 2))\n",
    "cols = X.columns\n",
    "X = scalar.fit_transform(X)\n",
    "X = pd.DataFrame(X, columns=cols)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>mean radius</th>\n",
       "      <th>mean texture</th>\n",
       "      <th>mean perimeter</th>\n",
       "      <th>mean area</th>\n",
       "      <th>mean smoothness</th>\n",
       "      <th>mean compactness</th>\n",
       "      <th>mean concavity</th>\n",
       "      <th>mean concave points</th>\n",
       "      <th>mean symmetry</th>\n",
       "      <th>mean fractal dimension</th>\n",
       "      <th>...</th>\n",
       "      <th>worst radius</th>\n",
       "      <th>worst texture</th>\n",
       "      <th>worst perimeter</th>\n",
       "      <th>worst area</th>\n",
       "      <th>worst smoothness</th>\n",
       "      <th>worst compactness</th>\n",
       "      <th>worst concavity</th>\n",
       "      <th>worst concave points</th>\n",
       "      <th>worst symmetry</th>\n",
       "      <th>worst fractal dimension</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.084150</td>\n",
       "      <td>-1.909368</td>\n",
       "      <td>0.183954</td>\n",
       "      <td>-0.545069</td>\n",
       "      <td>0.375011</td>\n",
       "      <td>1.168149</td>\n",
       "      <td>0.812559</td>\n",
       "      <td>0.924453</td>\n",
       "      <td>0.745455</td>\n",
       "      <td>0.422072</td>\n",
       "      <td>...</td>\n",
       "      <td>0.483102</td>\n",
       "      <td>-1.433902</td>\n",
       "      <td>0.673241</td>\n",
       "      <td>-0.197208</td>\n",
       "      <td>0.404543</td>\n",
       "      <td>0.477166</td>\n",
       "      <td>0.274441</td>\n",
       "      <td>1.648110</td>\n",
       "      <td>0.393850</td>\n",
       "      <td>-0.324544</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.572578</td>\n",
       "      <td>-0.909706</td>\n",
       "      <td>0.463133</td>\n",
       "      <td>0.006363</td>\n",
       "      <td>-0.840480</td>\n",
       "      <td>-1.272928</td>\n",
       "      <td>-1.185567</td>\n",
       "      <td>-0.604970</td>\n",
       "      <td>-0.480808</td>\n",
       "      <td>-1.434709</td>\n",
       "      <td>...</td>\n",
       "      <td>0.427606</td>\n",
       "      <td>-0.785714</td>\n",
       "      <td>0.159271</td>\n",
       "      <td>-0.259143</td>\n",
       "      <td>-0.609787</td>\n",
       "      <td>-1.381747</td>\n",
       "      <td>-1.228115</td>\n",
       "      <td>0.556701</td>\n",
       "      <td>-1.065642</td>\n",
       "      <td>-1.108487</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.405982</td>\n",
       "      <td>-0.438958</td>\n",
       "      <td>0.382973</td>\n",
       "      <td>-0.202333</td>\n",
       "      <td>0.057236</td>\n",
       "      <td>-0.275934</td>\n",
       "      <td>-0.149953</td>\n",
       "      <td>0.542744</td>\n",
       "      <td>0.038384</td>\n",
       "      <td>-1.155013</td>\n",
       "      <td>...</td>\n",
       "      <td>0.225543</td>\n",
       "      <td>-0.559701</td>\n",
       "      <td>0.033767</td>\n",
       "      <td>-0.501966</td>\n",
       "      <td>-0.065641</td>\n",
       "      <td>-0.458499</td>\n",
       "      <td>-0.561022</td>\n",
       "      <td>1.340206</td>\n",
       "      <td>-0.385176</td>\n",
       "      <td>-1.146268</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-1.159638</td>\n",
       "      <td>-0.556645</td>\n",
       "      <td>-1.065994</td>\n",
       "      <td>-1.588378</td>\n",
       "      <td>1.245283</td>\n",
       "      <td>1.245445</td>\n",
       "      <td>0.262418</td>\n",
       "      <td>0.091451</td>\n",
       "      <td>1.105051</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>-1.006759</td>\n",
       "      <td>-0.456290</td>\n",
       "      <td>-1.034613</td>\n",
       "      <td>-1.623968</td>\n",
       "      <td>1.661890</td>\n",
       "      <td>1.256047</td>\n",
       "      <td>0.194569</td>\n",
       "      <td>1.539519</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>1.094845</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.519570</td>\n",
       "      <td>-1.373690</td>\n",
       "      <td>0.523944</td>\n",
       "      <td>-0.042842</td>\n",
       "      <td>-0.278595</td>\n",
       "      <td>-0.608429</td>\n",
       "      <td>-0.144330</td>\n",
       "      <td>0.073559</td>\n",
       "      <td>-0.486869</td>\n",
       "      <td>-1.252738</td>\n",
       "      <td>...</td>\n",
       "      <td>0.078975</td>\n",
       "      <td>-1.504264</td>\n",
       "      <td>0.027790</td>\n",
       "      <td>-0.633700</td>\n",
       "      <td>-0.250545</td>\n",
       "      <td>-1.310339</td>\n",
       "      <td>-0.722045</td>\n",
       "      <td>0.233677</td>\n",
       "      <td>-1.369998</td>\n",
       "      <td>-1.429621</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 30 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   mean radius  mean texture  mean perimeter  mean area  mean smoothness  \\\n",
       "0     0.084150     -1.909368        0.183954  -0.545069         0.375011   \n",
       "1     0.572578     -0.909706        0.463133   0.006363        -0.840480   \n",
       "2     0.405982     -0.438958        0.382973  -0.202333         0.057236   \n",
       "3    -1.159638     -0.556645       -1.065994  -1.588378         1.245283   \n",
       "4     0.519570     -1.373690        0.523944  -0.042842        -0.278595   \n",
       "\n",
       "   mean compactness  mean concavity  mean concave points  mean symmetry  \\\n",
       "0          1.168149        0.812559             0.924453       0.745455   \n",
       "1         -1.272928       -1.185567            -0.604970      -0.480808   \n",
       "2         -0.275934       -0.149953             0.542744       0.038384   \n",
       "3          1.245445        0.262418             0.091451       1.105051   \n",
       "4         -0.608429       -0.144330             0.073559      -0.486869   \n",
       "\n",
       "   mean fractal dimension  ...  worst radius  worst texture  worst perimeter  \\\n",
       "0                0.422072  ...      0.483102      -1.433902         0.673241   \n",
       "1               -1.434709  ...      0.427606      -0.785714         0.159271   \n",
       "2               -1.155013  ...      0.225543      -0.559701         0.033767   \n",
       "3                2.000000  ...     -1.006759      -0.456290        -1.034613   \n",
       "4               -1.252738  ...      0.078975      -1.504264         0.027790   \n",
       "\n",
       "   worst area  worst smoothness  worst compactness  worst concavity  \\\n",
       "0   -0.197208          0.404543           0.477166         0.274441   \n",
       "1   -0.259143         -0.609787          -1.381747        -1.228115   \n",
       "2   -0.501966         -0.065641          -0.458499        -0.561022   \n",
       "3   -1.623968          1.661890           1.256047         0.194569   \n",
       "4   -0.633700         -0.250545          -1.310339        -0.722045   \n",
       "\n",
       "   worst concave points  worst symmetry  worst fractal dimension  \n",
       "0              1.648110        0.393850                -0.324544  \n",
       "1              0.556701       -1.065642                -1.108487  \n",
       "2              1.340206       -0.385176                -1.146268  \n",
       "3              1.539519        2.000000                 1.094845  \n",
       "4              0.233677       -1.369998                -1.429621  \n",
       "\n",
       "[5 rows x 30 columns]"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X.head()"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "## Part 1: Implement algorithm in plaintext\n",
    "\n",
    "[SGD](https://en.wikipedia.org/wiki/Stochastic_gradient_descent)(Stochastic Gradient Descent) is a simple but effective optimization algorithm, so in MPC settings, it's common to use it to optimize the model.\n",
    "\n",
    "[LR](https://en.wikipedia.org/wiki/Logistic_regression)(Logistic Regression) is a widely used linear model especially in financial industry. So in this tutorial, as an example, we will implement LR with a modified SGD, called [policy-sgd](../development/policy_sgd_insight.rst), which can accelerate the speeds of training in most scenery.\n",
    "\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "Here, we just list some important equations used in policy-sgd:\n",
    "- LR compute gradient with(`n` is batch_size):\n",
    "$$ grad = \\frac{1}{n} \\sum_{i} (sigmoid(w^T x_i) - y_i) x_i $$\n",
    "- Policy-sgd compute dk in first epoch with(`p` is number of features):\n",
    "$$ d_k = \\frac{1}{\\sqrt{\\sum_j^{p} grad_j^2} + \\epsilon} $$\n",
    "- Then, update weights with(`i` means i-th epoch, `k` means k-th iter):\n",
    "$$ w_{i,k} = w_{i, k-1} -  d_k * \\alpha *  grad $$"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "In this part, we first forget the MPC setting(data split, protocol...) and  implement the algorithm in plaintext. Secretflow recommends user to do this with [Jax](https://jax.readthedocs.io/en/latest/), which `jax.numpy` provides a familiar NumPy-style API for ease of adoption. If you are familiar with Numpy, you can go through [this blog](https://jax.readthedocs.io/en/latest/notebooks/Common_Gotchas_in_JAX.html) and gets some caveats and then write jax-code just like numpy-code."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# import some basic library\n",
    "# use jnp just like np\n",
    "import jax.numpy as jnp\n",
    "import jax.lax\n",
    "\n",
    "import numpy as np\n",
    "from functools import partial"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "The original response function for LR is sigmoid function, which contains time-consuming ops like exp and division in MPC. So it's common to approximate sigmoid function with other MPC-friendly function. Here we give two method, i.e. first-order Taylor and square root approximation."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "def sigmoid_t1(x, limit: bool = True):\n",
    "    '''\n",
    "    taylor series referenced from:\n",
    "    https://mortendahl.github.io/2017/04/17/private-deep-learning-with-mpc/\n",
    "    '''\n",
    "    T0 = 1.0 / 2\n",
    "    T1 = 1.0 / 4\n",
    "    ret = T0 + x * T1\n",
    "    if limit:\n",
    "        return jnp.select([ret < 0, ret > 1], [0, 1], ret)\n",
    "    else:\n",
    "        return ret\n",
    "\n",
    "\n",
    "def sigmoid_sr(x):\n",
    "    \"\"\"\n",
    "    https://en.wikipedia.org/wiki/Sigmoid_function#Examples\n",
    "    Square Root approximation functions:\n",
    "    F(x) = 0.5 * ( x / ( 1 + x^2 )^0.5 ) + 0.5\n",
    "    sigmoid_sr almost perfect fit to sigmoid if x out of range [-3,3]\n",
    "    highly recommended use this appr as GDBT's default sigmoid method.\n",
    "    \"\"\"\n",
    "    return 0.5 * (x / jnp.sqrt(1 + jnp.power(x, 2))) + 0.5\n",
    "\n",
    "\n",
    "def sigmoid(x, method='t1'):\n",
    "    if method == 't1':\n",
    "        return sigmoid_t1(x)\n",
    "    else:\n",
    "        return sigmoid_sr(x)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "policy-sgd needs scale learning rate in first epoch."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# Note: we leave a method param in this function for next part, in plaintext, we won't invoke low-level op in most conditions.\n",
    "def compute_dk_func(x, eps=1e-6, method='norm'):\n",
    "    # Same as Adam, need add small eps to avoid zero-division error\n",
    "    if method == 'norm':\n",
    "        return 1 / (jnp.linalg.norm(x) + eps)\n",
    "    else:\n",
    "        # invoke low-level rsqrt op by hand\n",
    "        return jax.lax.rsqrt(jnp.sum(jnp.square(x)) + eps)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "Then, we give a brief implementation of LR with policy-sgd, and have similar interface(but less) with sklearn.\n",
    "\n",
    "**Note**: for simplicity, we will always fit intercept in LR model and omit regularization and other techniques. For full version of SSLR,  can refer to `SSRegression` in secretflow."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "class SSLRSGDClassifier:\n",
    "    def __init__(\n",
    "        self,\n",
    "        epochs: int,\n",
    "        learning_rate: float,\n",
    "        batch_size: int,\n",
    "        sig_type: str = 't1',\n",
    "        eps: float = 1e-6,  # eps is the small number for computing dk\n",
    "        dk_method: str = 'norm',  # method to compute dk, default is use jnp.linalg.norm function\n",
    "    ):\n",
    "        # parameter check.\n",
    "        assert epochs > 0, f\"epochs should >0\"\n",
    "        assert learning_rate > 0, f\"learning_rate should >0\"\n",
    "        assert batch_size > 0, f\"batch_size should >0\"\n",
    "        assert sig_type in ['t1', 'sr'], f\"sig_type should one of ['t1', 'sr']\"\n",
    "        assert eps > 0, f\"eps should >0\"\n",
    "        assert dk_method in [\n",
    "            'norm',\n",
    "            'rsqrt',\n",
    "        ], f\"dk_method should one of ['norm', 'rsqrt']\"\n",
    "\n",
    "        self._epochs = epochs\n",
    "        self._learning_rate = learning_rate\n",
    "        self._batch_size = batch_size\n",
    "        self._sig_type = sig_type\n",
    "        self._eps = eps\n",
    "        self._dk_method = dk_method\n",
    "\n",
    "        self._weights = jnp.zeros(())\n",
    "\n",
    "    def _update_weights(\n",
    "        self,\n",
    "        x,  # array-like\n",
    "        y,  # array-like\n",
    "        w,  # array-like\n",
    "        total_batch: int,\n",
    "        batch_size: int,\n",
    "        dk_arr,  # array-like\n",
    "    ):\n",
    "        num_feat = x.shape[1]\n",
    "        assert w.shape[0] == num_feat + 1, \"w shape is mismatch to x\"\n",
    "        assert len(w.shape) == 1 or w.shape[1] == 1, \"w should be list or 1D array\"\n",
    "        w = w.reshape((w.shape[0], 1))\n",
    "\n",
    "        compute_dk = False\n",
    "        if dk_arr is None:\n",
    "            compute_dk = True\n",
    "            dk_arr = []\n",
    "\n",
    "        for idx in range(total_batch):\n",
    "            begin = idx * batch_size\n",
    "            end = min((idx + 1) * batch_size, x.shape[0])\n",
    "            rows = end - begin\n",
    "            # padding one col for bias in w\n",
    "            x_slice = jnp.concatenate((x[begin:end, :], jnp.ones((rows, 1))), axis=1)\n",
    "            y_slice = y[begin:end, :]\n",
    "\n",
    "            pred = jnp.matmul(x_slice, w)\n",
    "            pred = sigmoid(pred, method=self._sig_type)\n",
    "\n",
    "            err = pred - y_slice\n",
    "            grad = jnp.matmul(jnp.transpose(x_slice), err) / rows\n",
    "\n",
    "            if compute_dk:\n",
    "                dk = compute_dk_func(grad, self._eps, self._dk_method)\n",
    "                dk_arr.append(dk)\n",
    "            else:\n",
    "                dk = dk_arr[idx]\n",
    "\n",
    "            step = self._learning_rate * grad * dk\n",
    "\n",
    "            w = w - step\n",
    "\n",
    "        if compute_dk:\n",
    "            dk_arr = jnp.array(dk_arr)\n",
    "\n",
    "        return w, dk_arr\n",
    "\n",
    "    def fit(self, x, y):\n",
    "        \"\"\"Fit LR with policy-sgd.\n",
    "\n",
    "        Parameters\n",
    "        ----------\n",
    "        X : {array-like}, shape (n_samples, n_features)\n",
    "            Training data.\n",
    "\n",
    "        y : ndarray of shape (n_samples, 1)\n",
    "            Target values.\n",
    "\n",
    "        \"\"\"\n",
    "        assert len(x.shape) == 2, f\"expect x to be 2 dimension array, got {x.shape}\"\n",
    "        assert len(y.shape) == 2, f\"expect y to be 2 dimension array, got {y.shape}\"\n",
    "\n",
    "        num_sample = x.shape[0]\n",
    "        num_feat = x.shape[1]\n",
    "        batch_size = min(self._batch_size, num_sample)\n",
    "        total_batch = (num_sample + batch_size - 1) // batch_size\n",
    "\n",
    "        # always fit intercept\n",
    "        weights = jnp.zeros((num_feat + 1, 1))\n",
    "        dk_arr = None\n",
    "\n",
    "        # do train\n",
    "        for _ in range(self._epochs):\n",
    "            weights, dk_arr = self._update_weights(\n",
    "                x, y, weights, total_batch, batch_size, dk_arr\n",
    "            )\n",
    "\n",
    "        self._weights = weights\n",
    "        self.dk_arr = dk_arr\n",
    "\n",
    "        return\n",
    "\n",
    "    def predict_proba(self, x):\n",
    "        \"\"\"Probability estimates.\n",
    "\n",
    "        Parameters\n",
    "        ----------\n",
    "        X : {array-like}, shape (n_samples, n_features)\n",
    "            Input data for prediction.\n",
    "\n",
    "        Returns\n",
    "        -------\n",
    "        ndarray of shape (n_samples, n_classes)\n",
    "            Returns the probability of the sample for each class in the model,\n",
    "            where classes are ordered as they are in `self.classes_`.\n",
    "        \"\"\"\n",
    "        num_feat = x.shape[1]\n",
    "        w = self._weights\n",
    "        assert w.shape[0] == num_feat + 1, f\"w shape is mismatch to x={x.shape}\"\n",
    "        assert len(w.shape) == 1 or w.shape[1] == 1, \"w should be list or 1D array\"\n",
    "        w.reshape((w.shape[0], 1))\n",
    "\n",
    "        bias = w[-1, 0]\n",
    "        w = jnp.resize(w, (num_feat, 1))\n",
    "\n",
    "        pred = jnp.matmul(x, w) + bias\n",
    "        pred = sigmoid(pred, method=self._sig_type)\n",
    "\n",
    "        return pred"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "Now, let's try this algorithm in plaintext!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "An NVIDIA GPU may be present on this machine, but a CUDA-enabled jaxlib is not installed. Falling back to cpu.\n"
     ]
    }
   ],
   "source": [
    "plain_model = SSLRSGDClassifier(\n",
    "    epochs=3, learning_rate=0.1, batch_size=8, sig_type='t1', eps=1e-6, dk_method='norm'\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "plain_model.fit(X.values, y.values.reshape(-1, 1))  # X, y should be two-dimension array"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "Things seem go well, try to predict the dataset and compute auc."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "predict_prob = plain_model.predict_proba(X.values)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9903083875059459"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import roc_auc_score\n",
    "\n",
    "roc_auc_score(y.values, predict_prob)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "## Part 2: Run algorithm with simulator\n",
    "\n",
    "Normally, you can just do something like [LR with spu](https://www.secretflow.org.cn/docs/secretflow/en/tutorial/lr_with_spu.html) to run your program within a secure context: move you dataset to PYU or SPU, run program with SPU you declare and reveal some information you need(`reveal` is a **very dangerous** op, and you should use it very carefully in real application).\n",
    "\n",
    "However, we will see later that you may come across large **metric gap**(like auc in LR) between plaintext and secret. It will be a better choice that developer can run MPC program simpler with high flexibility to adjust hyper-parameters like the size of ring, fxp or underlying MPC protocol etc.\n",
    "\n",
    "So in this part, we will show how to use simulator to run our algorithm just like running normal MPC program, and do minimum experiments to focus and verify the pitfall of the program.\n",
    "To use simulator but not running program with SPU Device directly has two advantages:\n",
    "\n",
    "1. **Fewer Code**: No need to deal with tons of `DeviceObject` and move data from PYU between SPU.\n",
    "2. **Quicker Experiment**: No ray cluster connected, run experiments end-to-end.\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "import spu.utils.simulation as spsim\n",
    "import spu.spu_pb2 as spu_pb2\n",
    "import spu"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "Here, to simulate , we first define a simple simulator with CHEETAH protocol and 64 bits ring in 2pc settings. We will talk about 3pc later."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "sim = spsim.Simulator.simple(2, spu_pb2.ProtocolKind.CHEETAH, spu_pb2.FieldType.FM64)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "def fit_and_predict(\n",
    "    x,\n",
    "    y,\n",
    "    epochs=3,\n",
    "    learning_rate=0.1,\n",
    "    batch_size=8,\n",
    "    sig_type='t1',\n",
    "    eps=1e-6,\n",
    "    dk_method='norm',\n",
    "):\n",
    "    model = SSLRSGDClassifier(\n",
    "        epochs=epochs,\n",
    "        learning_rate=learning_rate,\n",
    "        batch_size=batch_size,\n",
    "        sig_type=sig_type,\n",
    "        eps=eps,\n",
    "        dk_method=dk_method,\n",
    "    )\n",
    "    model.fit(x, y)\n",
    "    return model.predict_proba(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[2024-02-01 09:24:44.108] [info] [cheetah_dot.cc:295] CheetahDot uses 3@2 modulus 8192 degree for 64 bit ring\n",
      "[2024-02-01 09:24:44.114] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:44.129] [info] [cheetah_mul.cc:347] CheetahMul uses 4 modulus for 64 bit input over 64 bit ring\n",
      "[2024-02-01 09:24:44.130] [info] [cheetah_mul.cc:347] CheetahMul uses 4 modulus for 64 bit input over 64 bit ring\n",
      "[2024-02-01 09:24:44.131] [info] [thread_pool.cc:30] Create a fixed thread pool with size 63\n",
      "[2024-02-01 09:24:44.683] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:44.692] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:44.707] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:44.717] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:44.731] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:44.741] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:44.757] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:44.767] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:44.782] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:44.792] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:44.807] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:44.816] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:44.831] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:44.840] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:44.856] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:44.865] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:44.880] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:44.889] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:44.904] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:44.913] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:44.930] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:44.939] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:44.952] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:44.961] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:44.975] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:44.984] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.000] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.010] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.026] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.035] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.050] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.059] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.073] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.082] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.096] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.105] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.119] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.128] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.143] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.152] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.167] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.179] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.197] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.208] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.226] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.238] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.257] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.269] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.284] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.293] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.307] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.316] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.340] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.350] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.367] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.377] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.391] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.400] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.414] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.424] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.441] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.451] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.467] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.477] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.493] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.502] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.517] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.528] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.544] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.555] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.571] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.580] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.594] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.602] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.616] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.625] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.639] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.647] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.660] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.668] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.682] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.690] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.704] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.713] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.726] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.734] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.747] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.755] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.769] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.778] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.792] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.802] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.815] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.824] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.838] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.846] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.862] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.872] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.888] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.911] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.927] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.937] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.953] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.977] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:45.997] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.007] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.022] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.032] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.047] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.056] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.071] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.080] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.096] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.105] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.120] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.129] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.144] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.153] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.169] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.178] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.195] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.204] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.218] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.227] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.242] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.252] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.265] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.275] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.291] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.300] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.314] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.325] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.341] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.352] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.369] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.380] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.397] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.409] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.427] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.438] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.456] [info] [cheetah_dot.cc:423] 1@1x31x1 => 1x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.474] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.483] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.491] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.500] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.508] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.519] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.177 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.528] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.538] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.547] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.557] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.566] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.578] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.587] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.597] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.606] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.617] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.627] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.640] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.648] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.659] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.668] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.681] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.690] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.701] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.709] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.718] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.726] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.735] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.743] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.753] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.761] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.770] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.778] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.788] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.801] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.812] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.821] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.830] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.839] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.849] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.857] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.867] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.875] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.884] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.893] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.902] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.911] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.920] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.928] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.939] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.948] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.958] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.967] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.978] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.988] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:46.998] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.008] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.019] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.029] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.040] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.049] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.060] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.069] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.080] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.089] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.100] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.109] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.119] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.126] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.136] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.145] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.154] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.161] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.171] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.181] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.190] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.198] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.207] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.215] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.224] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.232] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.243] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.251] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.260] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.268] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.278] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.286] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.296] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.306] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.318] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.327] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.336] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.344] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.353] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.362] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.372] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.382] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.391] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.400] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.409] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.419] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.428] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.436] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.445] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.454] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.465] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.473] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.482] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.491] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.501] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.510] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.520] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.529] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.539] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.547] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.556] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.565] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.575] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.584] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.594] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.603] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.612] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.619] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.630] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.640] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.650] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.659] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.669] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.678] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.687] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.695] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.703] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.711] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.720] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.728] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.736] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.744] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.753] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.761] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.770] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.777] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.786] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.794] [info] [cheetah_dot.cc:423] 1@1x31x1 => 1x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.803] [info] [cheetah_dot.cc:423] 1@31x1x1 => 31x1x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.811] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.820] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.828] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.837] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.845] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.854] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.862] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.872] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.879] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.888] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.896] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.905] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.913] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.921] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.930] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.939] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.947] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.956] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.963] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.972] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.980] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:47.989] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.002] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.012] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.020] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.030] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.040] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.049] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.058] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.177 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.067] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.074] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.083] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.091] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.100] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.107] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.116] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.125] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.136] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.145] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.155] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.164] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.175] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.184] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.193] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.202] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.212] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.220] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.228] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.236] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.245] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.252] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.261] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.269] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.278] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.285] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.295] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.302] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.312] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.319] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.328] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.336] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.345] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.353] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.363] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.371] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.380] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.388] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.397] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.405] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.415] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.423] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.433] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.440] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.449] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.458] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.468] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.476] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.486] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.494] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.502] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.511] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.520] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.527] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.539] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.547] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.557] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.565] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.574] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.581] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.591] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.598] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.607] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.614] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.623] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.631] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.640] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.648] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.657] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.665] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.675] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.682] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.691] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.700] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.709] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.716] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.726] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.733] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.742] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.749] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.759] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.767] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.775] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.783] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.792] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.799] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.808] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.816] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.824] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.832] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.840] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.848] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.857] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.864] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.873] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.881] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.890] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.897] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.909] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.917] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.926] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.935] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.945] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.953] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.962] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.970] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.980] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.988] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:48.997] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:49.005] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:49.014] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:49.022] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:49.031] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:49.039] [info] [cheetah_dot.cc:423] 1@1x31x1 => 1x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:49.048] [info] [cheetah_dot.cc:423] 1@31x1x1 => 31x1x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:49.064] [info] [cheetah_dot.cc:423] 1@569x30x1 => 512x16x1 Recv 0.353 MiB, Response 0.243 MiB Pack 6.063 ms\n"
     ]
    }
   ],
   "source": [
    "result = spsim.sim_jax(sim, fit_and_predict)(\n",
    "    X.values, y.values.reshape(-1, 1)\n",
    ")  # X, y should be two-dimension array"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.49056603773584906"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "roc_auc_score(y, result)  # rather pool under cheetah protocol!"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "Then, we try it in 3pc setting, i.e. use ABY3 protocol."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "sim_aby = spsim.Simulator.simple(3, spu_pb2.ProtocolKind.ABY3, spu_pb2.FieldType.FM64)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "result = spsim.sim_jax(sim_aby, fit_and_predict)(X.values, y.values.reshape(-1, 1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9707864277786586"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "roc_auc_score(y, result)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.970865704772475"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# not very stable, if you run the fit procedure multiple times, you will sometimes get 0.97\n",
    "result = spsim.sim_jax(sim_aby, fit_and_predict)(X.values, y.values.reshape(-1, 1))\n",
    "roc_auc_score(y, result)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "When the program runs in secret without any modification, the auc may drop dramatically after training 3 epochs(from 0.990 to 0.490 for cheetah)!\n",
    "\n",
    "We will give some analysis and try to fix it first from application perspective and think deeper in MPC perspective.\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "### Application Perspective\n",
    "Before we dive into this question, we can first summarize the differences of policy-sgd between naive-sgd are:\n",
    "\n",
    "1. Using approximation function to compute sigmoid(default is t1).  \n",
    "\n",
    "2. The scale of learning rate, which contains the computation of dk as defined in `compute_dk_func`.\n",
    "\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "Doing some simple math, we can notice that t1 approximation will force the pred to 0 when inner product is less than -2 and to 1 when inner product is large than 2. So when we compute gradient with:\n",
    "$$ grad = \\frac{1}{n} \\sum_{i} (sigmoid(w^T x_i) - y_i) x_i $$\n",
    "If coincidentally, we can get all elements of grad very near to 0(may have little error in MPC), then the `dk` computed in first epoch becomes very large, and may result in the failure of training. We can verify this by simply enlarge the `batch_size` to 64 which can decrease the probability of all-zero problem."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[2024-02-01 09:24:54.880] [info] [cheetah_dot.cc:295] CheetahDot uses 3@2 modulus 8192 degree for 64 bit ring\n",
      "[2024-02-01 09:24:54.887] [info] [cheetah_dot.cc:423] 1@31x64x1 => 31x64x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:54.897] [info] [cheetah_mul.cc:347] CheetahMul uses 4 modulus for 64 bit input over 64 bit ring\n",
      "[2024-02-01 09:24:54.898] [info] [cheetah_mul.cc:347] CheetahMul uses 4 modulus for 64 bit input over 64 bit ring\n",
      "[2024-02-01 09:24:54.922] [info] [cheetah_dot.cc:423] 1@64x31x1 => 64x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:54.934] [info] [cheetah_dot.cc:423] 1@31x64x1 => 31x64x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:54.952] [info] [cheetah_dot.cc:423] 1@64x31x1 => 64x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:54.964] [info] [cheetah_dot.cc:423] 1@31x64x1 => 31x64x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:54.980] [info] [cheetah_dot.cc:423] 1@64x31x1 => 64x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:54.992] [info] [cheetah_dot.cc:423] 1@31x64x1 => 31x64x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:55.011] [info] [cheetah_dot.cc:423] 1@64x31x1 => 64x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:55.023] [info] [cheetah_dot.cc:423] 1@31x64x1 => 31x64x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:55.040] [info] [cheetah_dot.cc:423] 1@64x31x1 => 64x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:55.052] [info] [cheetah_dot.cc:423] 1@31x64x1 => 31x64x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:55.070] [info] [cheetah_dot.cc:423] 1@64x31x1 => 64x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:55.082] [info] [cheetah_dot.cc:423] 1@31x64x1 => 31x64x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:55.098] [info] [cheetah_dot.cc:423] 1@64x31x1 => 64x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:55.108] [info] [cheetah_dot.cc:423] 1@31x64x1 => 31x64x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:55.126] [info] [cheetah_dot.cc:423] 1@57x31x1 => 57x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:55.137] [info] [cheetah_dot.cc:423] 1@31x57x1 => 31x57x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:55.154] [info] [cheetah_dot.cc:423] 1@64x31x1 => 64x31x1 Recv 0.176 MiB, Response 0.123 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:55.166] [info] [cheetah_dot.cc:423] 1@31x64x1 => 31x64x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:55.174] [info] [cheetah_dot.cc:423] 1@64x31x1 => 64x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:55.185] [info] [cheetah_dot.cc:423] 1@31x64x1 => 31x64x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:55.193] [info] [cheetah_dot.cc:423] 1@64x31x1 => 64x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:55.204] [info] [cheetah_dot.cc:423] 1@31x64x1 => 31x64x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:55.212] [info] [cheetah_dot.cc:423] 1@64x31x1 => 64x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:55.223] [info] [cheetah_dot.cc:423] 1@31x64x1 => 31x64x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:55.231] [info] [cheetah_dot.cc:423] 1@64x31x1 => 64x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:55.243] [info] [cheetah_dot.cc:423] 1@31x64x1 => 31x64x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:55.251] [info] [cheetah_dot.cc:423] 1@64x31x1 => 64x31x1 Recv 0.176 MiB, Response 0.123 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:55.261] [info] [cheetah_dot.cc:423] 1@31x64x1 => 31x64x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:55.269] [info] [cheetah_dot.cc:423] 1@64x31x1 => 64x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:55.279] [info] [cheetah_dot.cc:423] 1@31x64x1 => 31x64x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:55.288] [info] [cheetah_dot.cc:423] 1@64x31x1 => 64x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:55.299] [info] [cheetah_dot.cc:423] 1@31x64x1 => 31x64x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:55.308] [info] [cheetah_dot.cc:423] 1@57x31x1 => 57x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:55.319] [info] [cheetah_dot.cc:423] 1@31x57x1 => 31x57x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:55.328] [info] [cheetah_dot.cc:423] 1@64x31x1 => 64x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:55.340] [info] [cheetah_dot.cc:423] 1@31x64x1 => 31x64x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:55.350] [info] [cheetah_dot.cc:423] 1@64x31x1 => 64x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:55.361] [info] [cheetah_dot.cc:423] 1@31x64x1 => 31x64x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:55.369] [info] [cheetah_dot.cc:423] 1@64x31x1 => 64x31x1 Recv 0.176 MiB, Response 0.123 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:55.379] [info] [cheetah_dot.cc:423] 1@31x64x1 => 31x64x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:55.387] [info] [cheetah_dot.cc:423] 1@64x31x1 => 64x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:55.398] [info] [cheetah_dot.cc:423] 1@31x64x1 => 31x64x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:55.406] [info] [cheetah_dot.cc:423] 1@64x31x1 => 64x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:55.417] [info] [cheetah_dot.cc:423] 1@31x64x1 => 31x64x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:55.425] [info] [cheetah_dot.cc:423] 1@64x31x1 => 64x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:55.435] [info] [cheetah_dot.cc:423] 1@31x64x1 => 31x64x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:55.443] [info] [cheetah_dot.cc:423] 1@64x31x1 => 64x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:55.453] [info] [cheetah_dot.cc:423] 1@31x64x1 => 31x64x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:55.461] [info] [cheetah_dot.cc:423] 1@64x31x1 => 64x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:55.471] [info] [cheetah_dot.cc:423] 1@31x64x1 => 31x64x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:55.479] [info] [cheetah_dot.cc:423] 1@57x31x1 => 57x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:55.488] [info] [cheetah_dot.cc:423] 1@31x57x1 => 31x57x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:55.505] [info] [cheetah_dot.cc:423] 1@569x30x1 => 512x16x1 Recv 0.353 MiB, Response 0.243 MiB Pack 7.123 ms\n"
     ]
    }
   ],
   "source": [
    "# use partial to fix batch_size=64\n",
    "result = spsim.sim_jax(sim, partial(fit_and_predict, batch_size=64))(\n",
    "    X.values, y.values.reshape(-1, 1)\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9892315416732731"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "roc_auc_score(y, result)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "Restricting large batch_size is not an appropriate way, the key is to make the scale factor smaller, we can also fix the question by enlarging the `eps`, e.g. change `eps` from 1e-6 to 1e-2.\n",
    "\n",
    "\n",
    "**Note**: `eps` in policy-sgd indeed has two affects, one is to prevent the zero-division error, the other is to restrict the maximum scale factor in warm-start phase(first epoch)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[2024-02-01 09:24:58.191] [info] [cheetah_dot.cc:295] CheetahDot uses 3@2 modulus 8192 degree for 64 bit ring\n",
      "[2024-02-01 09:24:58.199] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:58.208] [info] [cheetah_mul.cc:347] CheetahMul uses 4 modulus for 64 bit input over 64 bit ring\n",
      "[2024-02-01 09:24:58.208] [info] [cheetah_mul.cc:347] CheetahMul uses 4 modulus for 64 bit input over 64 bit ring\n",
      "[2024-02-01 09:24:58.849] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:58.859] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:58.876] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:58.886] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:58.903] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:58.913] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:58.930] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:58.940] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:58.955] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:58.964] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:58.980] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:58.989] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.005] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.015] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.031] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.041] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.056] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.067] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.082] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.092] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.107] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.116] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.130] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.139] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.154] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.163] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.178] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.186] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.201] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.210] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.226] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.236] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.251] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.262] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.278] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.287] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.302] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.312] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.327] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.336] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.352] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.361] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.378] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.387] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.404] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.414] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.430] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.441] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.456] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.465] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.479] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.487] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.506] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.515] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.529] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.538] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.555] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.565] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.579] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.588] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.601] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.610] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.625] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.634] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.648] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.658] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.673] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.682] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.697] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.706] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.720] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.730] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.745] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.755] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.770] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.779] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.794] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.803] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.817] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.825] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.839] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.848] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.862] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.871] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.887] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.897] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.910] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.919] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.934] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.943] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.957] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.966] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.981] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:24:59.990] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.005] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.014] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.028] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.037] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.052] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.062] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.076] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.085] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.100] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.109] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.128] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.137] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.151] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.161] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.175] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.184] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.199] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.208] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.222] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.231] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.244] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.254] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.269] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.278] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.293] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.301] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.316] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.325] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.340] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.349] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.364] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.374] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.389] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.398] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.412] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.421] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.435] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.444] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.458] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.467] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.482] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.491] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.506] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.515] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.530] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.540] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.565] [info] [cheetah_dot.cc:423] 1@1x31x1 => 1x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.580] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.589] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.597] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.605] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.613] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.623] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.630] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.639] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.647] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.656] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.664] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.673] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.680] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.689] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.696] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.705] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.712] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.721] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.729] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.738] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.746] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.755] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.762] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.771] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.778] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.787] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.794] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.803] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.811] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.819] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.827] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.835] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.843] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.851] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.864] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.873] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.880] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.889] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.896] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.905] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.912] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.921] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.929] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.938] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.945] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.954] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.961] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.971] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.978] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.986] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:00.994] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.002] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.010] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.018] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.026] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.034] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.042] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.050] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.058] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.066] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.074] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.082] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.090] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.098] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.105] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.114] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.121] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.130] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.138] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.147] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.154] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.163] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.170] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.178] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.186] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.194] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.202] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.211] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.218] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.227] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.234] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.243] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.250] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.259] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.267] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.276] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.284] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.293] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.301] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.310] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.318] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.328] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.336] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.345] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.353] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.362] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.370] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.380] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.390] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.402] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.410] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.420] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.429] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.439] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.447] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.455] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.463] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.471] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.479] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.488] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.496] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.506] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.515] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.525] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.534] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.545] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.554] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.564] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.574] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.584] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.592] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.601] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.609] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.619] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.628] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.637] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.645] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.654] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.662] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.671] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.679] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.689] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.697] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.707] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.715] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.724] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.732] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.741] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.749] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.758] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.766] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.775] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.783] [info] [cheetah_dot.cc:423] 1@1x31x1 => 1x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.791] [info] [cheetah_dot.cc:423] 1@31x1x1 => 31x1x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.799] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.808] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.815] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.825] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.832] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.841] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.849] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.858] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.866] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.875] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.883] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.892] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.901] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.912] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.920] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.929] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.937] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.946] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.953] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.963] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.970] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.980] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:01.994] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.004] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.013] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.024] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.033] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.044] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.054] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.064] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.072] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.081] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.089] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.098] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.106] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.114] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.122] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.131] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.138] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.147] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.156] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.165] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.173] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.182] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.190] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.200] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.209] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.218] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.227] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.237] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.246] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.255] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.264] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.272] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.280] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.289] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.297] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.307] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.316] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.327] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.335] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.345] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.354] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.364] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.373] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.383] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.390] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.400] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.407] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.417] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.425] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.434] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.442] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.451] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.459] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.468] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.477] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.486] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.494] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.503] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.511] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.520] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.528] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.539] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.548] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.559] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.569] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.580] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.590] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.602] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.610] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.620] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.628] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.637] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.645] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.654] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.663] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.672] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.682] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.695] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.706] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.718] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.728] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.741] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.752] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.763] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.773] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.783] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.793] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.804] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.813] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.825] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.834] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.844] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.853] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.864] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.874] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.885] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.894] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.906] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.916] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.928] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.936] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.947] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.956] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.967] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.978] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:02.990] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:03.001] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:03.013] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:03.022] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:03.033] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:03.044] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:03.055] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:03.066] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:03.078] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:03.087] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:03.098] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:03.107] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:03.117] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:03.139] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:03.149] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:03.157] [info] [cheetah_dot.cc:423] 1@1x31x1 => 1x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:03.166] [info] [cheetah_dot.cc:423] 1@31x1x1 => 31x1x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:03.182] [info] [cheetah_dot.cc:423] 1@569x30x1 => 512x16x1 Recv 0.353 MiB, Response 0.243 MiB Pack 7.499 ms\n"
     ]
    }
   ],
   "source": [
    "result = spsim.sim_jax(sim, partial(fit_and_predict, eps=1e-2))(\n",
    "    X.values, y.values.reshape(-1, 1)\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9884255589028065"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "roc_auc_score(y, result)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "The above analyses are based on t1 sigmoid, which leads to 0 in grad. So we can switch the t1 approximation to other non-truncate but costly form(e.g. sr approximation)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[2024-02-01 09:25:05.483] [info] [cheetah_mul.cc:347] CheetahMul uses 4 modulus for 64 bit input over 64 bit ring\n",
      "[2024-02-01 09:25:05.483] [info] [cheetah_mul.cc:347] CheetahMul uses 4 modulus for 64 bit input over 64 bit ring\n",
      "[2024-02-01 09:25:06.124] [info] [cheetah_dot.cc:295] CheetahDot uses 3@2 modulus 8192 degree for 64 bit ring\n",
      "[2024-02-01 09:25:06.131] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.146] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.158] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.173] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.184] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.200] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.212] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.227] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.238] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.253] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.264] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.280] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.292] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.306] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.318] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.332] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.344] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.360] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.371] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.388] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.400] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.415] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.427] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.441] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.452] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.467] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.479] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.495] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.510] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.526] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.537] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.552] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.564] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.581] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.594] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.610] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.622] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.637] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.649] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.663] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.674] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.689] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.701] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.716] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.727] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.742] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.753] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.768] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.779] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.794] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.805] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.820] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.830] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.846] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.856] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.872] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.884] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.904] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.915] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.929] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.941] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.957] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.969] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.985] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:06.997] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.011] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.024] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.039] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.050] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.065] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.076] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.091] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.102] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.117] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.128] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.142] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.153] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.168] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.178] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.193] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.205] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.220] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.231] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.244] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.255] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.271] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.288] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.302] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.314] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.328] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.340] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.355] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.368] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.384] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.397] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.412] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.423] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.437] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.448] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.462] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.473] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.487] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.498] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.512] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.523] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.536] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.547] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.560] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.571] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.584] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.597] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.613] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.625] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.641] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.653] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.674] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.686] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.713] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.726] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.742] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.755] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.773] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.786] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.801] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.813] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.829] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.841] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.858] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.870] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.885] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.896] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.909] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.920] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.935] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.946] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.960] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.972] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.986] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:07.996] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.010] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.022] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.036] [info] [cheetah_dot.cc:423] 1@1x31x1 => 1x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.055] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.071] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.079] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.091] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.099] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.110] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.117] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.128] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.136] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.148] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.156] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.167] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.174] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.185] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.193] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.203] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.211] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.222] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.230] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.241] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.249] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.259] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.267] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.278] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.285] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.296] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.304] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.315] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.323] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.333] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.341] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.352] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.360] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.371] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.378] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.389] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.397] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.408] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.415] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.427] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.434] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.445] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.453] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.465] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.478] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.490] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.498] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.510] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.519] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.532] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.541] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.553] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.561] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.572] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.580] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.592] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.599] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.610] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.618] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.629] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.637] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.648] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.655] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.667] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.674] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.685] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.692] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.704] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.711] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.722] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.729] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.740] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.747] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.758] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.766] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.779] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.786] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.797] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.804] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.815] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.823] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.835] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.843] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.854] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.861] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.873] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.880] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.896] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.904] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.929] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.937] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.948] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.956] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.968] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.975] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.987] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:08.995] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.007] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.015] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.027] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.034] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.046] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.054] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.065] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.073] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.084] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.092] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.103] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.111] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.122] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.130] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.141] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.148] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.160] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.167] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.179] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.186] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.197] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.205] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.216] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.224] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.235] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.242] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.253] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.261] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.272] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.280] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.291] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.299] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.310] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.177 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.317] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.333] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.341] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.352] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.360] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.371] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.378] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.391] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.398] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.409] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.417] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.428] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.436] [info] [cheetah_dot.cc:423] 1@1x31x1 => 1x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.447] [info] [cheetah_dot.cc:423] 1@31x1x1 => 31x1x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.455] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.467] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.474] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.486] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.494] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.505] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.513] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.525] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.533] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.545] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.553] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.565] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.572] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.584] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.591] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.604] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.613] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.626] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.633] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.646] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.653] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.665] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.673] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.684] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.692] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.704] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.712] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.723] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.732] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.746] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.755] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.773] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.780] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.791] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.800] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.811] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.819] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.830] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.838] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.849] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.857] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.870] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.879] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.893] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.901] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.913] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.920] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.932] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.939] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.950] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.958] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.970] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.978] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.989] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:09.996] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.007] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.015] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.027] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.035] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.046] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.054] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.066] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.074] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.088] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.097] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.109] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.118] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.130] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.140] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.153] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.162] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.176] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.186] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.200] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.215] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.227] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.237] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.250] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.259] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.272] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.281] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.293] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.302] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.313] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.321] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.334] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.342] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.353] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.361] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.373] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.381] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.392] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.400] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.411] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.419] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.430] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.438] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.451] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.459] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.470] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.478] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.489] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.497] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.510] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.517] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.530] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.539] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.552] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.561] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.573] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.583] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.595] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.603] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.614] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.622] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.633] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.640] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.655] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.663] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.675] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.683] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.694] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.704] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.717] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.725] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.738] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.745] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.757] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.764] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.776] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.784] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.795] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.803] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.814] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.822] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.833] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.841] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.852] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.860] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.871] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.880] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.893] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.902] [info] [cheetah_dot.cc:423] 1@1x31x1 => 1x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.913] [info] [cheetah_dot.cc:423] 1@31x1x1 => 31x1x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:10.929] [info] [cheetah_dot.cc:423] 1@569x30x1 => 512x16x1 Recv 0.353 MiB, Response 0.243 MiB Pack 7.132 ms\n"
     ]
    }
   ],
   "source": [
    "result = spsim.sim_jax(sim, partial(fit_and_predict, sig_type='sr'))(\n",
    "    X.values, y.values.reshape(-1, 1)\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.992151577612177"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "roc_auc_score(y, result)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "So, if we just consider it on app layer, we can get three rules for fixing:\n",
    "\n",
    "1. enlarge `batch_size`.\n",
    "\n",
    "2. enlarge `eps`.\n",
    "\n",
    "3. use non-truncate sigmoid approximation(e.g. sr approximation).\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "### MPC Perspective\n",
    "\n",
    "In this part, we concentrate more on why huge error occurs. To achieve this goal, we will talk according to underlying protocol and use simulator to do some **experiments** to confirm our hypothesis. Readers can do the similar things when you develop your own secure application.\n",
    "\n",
    "Before diving into the problem deeper, we highly recommend the reader to read: \n",
    "\n",
    " 1. [spu_inside](https://www.secretflow.org.cn/docs/spu/latest/en-US/tutorials/spu_inside#Tracing): gives some introductions how spu works inside for float-point operations.\n",
    "\n",
    " 2. [pitfall](https://www.secretflow.org.cn/docs/spu/latest/en-US/development/fxp): spu implements math function(like `reciprocal`, `log` and so on) with approximation algorithm, so some precision issue will occur when inputs fall into some intervals. We list some known issue about this.\n",
    "\n",
    "3. [protocols](https://www.secretflow.org.cn/docs/spu/latest/en-US/reference/mpc_status): list all protocols spu implements now. Generally speaking, for 2pc, it's safe to use cheetah, while for 3pc, ABY3 is the only choice.\n",
    "\n",
    "First define a function just like `fit_and_predict` to get dk_arr."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "def get_dk(\n",
    "    x,\n",
    "    y,\n",
    "    epochs=3,\n",
    "    learning_rate=0.1,\n",
    "    batch_size=8,\n",
    "    sig_type='t1',\n",
    "    eps=1e-6,\n",
    "    dk_method='norm',\n",
    "):\n",
    "    model = SSLRSGDClassifier(\n",
    "        epochs=epochs,\n",
    "        learning_rate=learning_rate,\n",
    "        batch_size=batch_size,\n",
    "        sig_type=sig_type,\n",
    "        eps=eps,\n",
    "        dk_method=dk_method,\n",
    "    )\n",
    "    model.fit(x, y)\n",
    "    return model.dk_arr"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "#### 2PC: Cheetah Protocol\n",
    "\n",
    "Recap:\n",
    "\n",
    "1. [cheetah](https://eprint.iacr.org/2022/207) is a fast 2pc semi-honest protocol which uses FHE to accelerate the computation. But it will have 0-2 bits error when do `mul` or `dot`.\n",
    "\n",
    "2. If 64-bits ring, about 18 bitwidth fixed-point number will be used. So the minimum positive float spu can represent is $\\frac{1}{2^{18}}$."
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "We first check the output of dk_arr and try to find the caveat."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[2024-02-01 09:25:13.156] [info] [cheetah_dot.cc:295] CheetahDot uses 3@2 modulus 8192 degree for 64 bit ring\n",
      "[2024-02-01 09:25:13.161] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:13.173] [info] [cheetah_mul.cc:347] CheetahMul uses 4 modulus for 64 bit input over 64 bit ring\n",
      "[2024-02-01 09:25:13.173] [info] [cheetah_mul.cc:347] CheetahMul uses 4 modulus for 64 bit input over 64 bit ring\n",
      "[2024-02-01 09:25:13.713] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:13.723] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:13.738] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:13.747] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:13.761] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:13.769] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:13.784] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:13.793] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:13.807] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:13.816] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:13.830] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:13.838] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:13.852] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:13.861] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:13.874] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:13.883] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:13.898] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:13.907] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:13.922] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:13.932] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:13.946] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:13.955] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:13.970] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:13.980] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:13.994] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.004] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.020] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.028] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.042] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.050] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.064] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.073] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.086] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.095] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.108] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.118] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.133] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.143] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.159] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.168] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.182] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.192] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.206] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.216] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.232] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.241] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.257] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.266] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.281] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.291] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.306] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.315] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.335] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.346] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.363] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.374] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.392] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.403] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.434] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.446] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.464] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.474] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.489] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.498] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.514] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.524] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.538] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.547] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.561] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.570] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.584] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.593] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.608] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.617] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.632] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.642] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.656] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.665] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.680] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.690] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.704] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.713] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.728] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.737] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.753] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.763] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.780] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.796] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.811] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.820] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.834] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.843] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.858] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.867] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.881] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.890] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.904] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.912] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.926] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.935] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.948] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.956] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.971] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.979] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:14.997] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:15.005] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:15.020] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:15.028] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:15.042] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:15.050] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:15.064] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:15.073] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:15.087] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:15.096] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:15.109] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:15.118] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:15.134] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:15.144] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:15.158] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:15.167] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:15.181] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:15.190] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:15.206] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:15.214] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:15.227] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:15.235] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:15.249] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:15.258] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:15.271] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:15.279] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:15.292] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:15.300] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:15.314] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:15.322] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:15.336] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:15.345] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:15.359] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:15.367] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:15.382] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:15.390] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:15.404] [info] [cheetah_dot.cc:423] 1@1x31x1 => 1x31x1 Recv 0.176 MiB, Response 0.121 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:15.412] [info] [cheetah_dot.cc:423] 1@31x1x1 => 31x1x1 Recv 0.176 MiB, Response 0.122 MiB Pack 0 ms\n"
     ]
    }
   ],
   "source": [
    "result = spsim.sim_jax(sim, get_dk)(X.values, y.values.reshape(-1, 1))"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "Surprisingly, we get a very **small negative number** which makes that weight update wrong!(the opposite direction and large scale factor for sgd)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.0"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result[38]"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "However, if we use a bigger ring, then everything is ok."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# define a simulator with 128 rings\n",
    "sim128 = spsim.Simulator.simple(\n",
    "    2, spu_pb2.ProtocolKind.CHEETAH, spu_pb2.FieldType.FM128\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[2024-02-01 09:25:18.287] [info] [cheetah_dot.cc:295] CheetahDot uses 5@3 modulus 16384 degree for 128 bit ring\n",
      "[2024-02-01 09:25:18.304] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:18.327] [info] [cheetah_mul.cc:347] CheetahMul uses 7 modulus for 128 bit input over 128 bit ring\n",
      "[2024-02-01 09:25:18.328] [info] [cheetah_mul.cc:347] CheetahMul uses 7 modulus for 128 bit input over 128 bit ring\n",
      "[2024-02-01 09:25:18.641] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:18.670] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:18.704] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:18.730] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:18.764] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:18.790] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:18.824] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:18.851] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:18.884] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:18.911] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:18.951] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:18.980] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:19.018] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:19.049] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:19.086] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:19.120] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:19.159] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:19.191] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:19.226] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:19.257] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:19.295] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:19.323] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:19.362] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:19.389] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:19.427] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:19.457] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:19.488] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:19.520] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:19.553] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:19.580] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:19.612] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:19.639] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:19.674] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:19.700] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:19.732] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:19.759] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:19.793] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:19.818] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:19.855] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:19.885] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:19.924] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:19.952] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:19.984] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:20.013] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:20.049] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:20.075] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:20.107] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:20.133] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:20.166] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:20.192] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:20.224] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:20.251] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:20.291] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:20.317] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:20.349] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:20.376] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:20.414] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:20.442] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:20.480] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:20.510] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:20.544] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:20.570] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:20.603] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:20.630] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:20.665] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:20.692] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:20.726] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:20.753] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:20.790] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:20.820] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:20.853] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:20.884] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:20.917] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:20.945] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:20.976] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:21.002] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:21.035] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:21.063] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:21.097] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:21.125] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:21.160] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:21.188] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:21.223] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:21.256] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:21.289] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:21.315] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:21.347] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:21.374] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:21.407] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:21.435] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:21.470] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:21.498] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:21.538] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:21.573] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:21.604] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:21.636] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:21.668] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:21.695] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:21.728] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:21.757] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:21.790] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:21.817] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:21.850] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:21.879] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:21.918] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:21.944] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:21.977] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:22.004] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:22.039] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:22.067] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:22.099] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:22.130] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:22.166] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:22.198] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:22.232] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:22.259] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:22.292] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:22.320] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:22.352] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:22.380] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:22.416] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:22.443] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:22.477] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:22.511] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:22.551] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:22.585] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:22.625] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:22.653] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:22.691] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:22.725] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:22.760] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:22.789] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:22.822] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:22.853] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:22.886] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:22.915] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:22.948] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:22.976] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:23.010] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:23.036] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:23.070] [info] [cheetah_dot.cc:423] 1@1x31x1 => 1x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:23.104] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:23.131] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:23.157] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:23.184] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:23.210] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:23.239] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:23.265] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:23.293] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:23.319] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:23.348] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:23.373] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:23.401] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:23.428] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:23.456] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:23.482] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:23.511] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:23.537] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:23.564] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:23.590] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:23.618] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:23.643] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:23.671] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:23.702] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:23.735] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:23.762] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:23.790] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:23.817] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:23.857] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:23.895] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:23.925] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:23.952] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:23.980] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:24.011] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:24.041] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:24.074] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:24.103] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:24.129] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:24.162] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:24.192] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:24.225] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:24.255] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:24.286] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:24.317] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:24.349] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:24.381] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:24.411] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:24.438] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:24.466] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:24.491] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:24.520] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:24.552] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:24.583] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:24.608] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:24.636] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:24.661] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:24.689] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:24.714] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:24.743] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:24.776] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:24.811] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:24.837] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:24.865] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:24.891] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:24.919] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:24.952] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:24.988] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:25.021] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:25.056] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:25.087] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:25.116] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:25.158] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:25.192] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:25.218] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:25.246] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:25.279] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:25.307] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:25.332] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:25.359] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:25.389] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:25.423] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:25.451] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:25.483] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:25.512] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:25.543] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:25.569] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:25.597] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:25.625] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:25.657] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:25.684] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:25.715] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:25.740] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:25.767] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:25.793] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:25.825] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:25.856] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:25.886] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:25.913] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:25.949] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:25.978] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:26.005] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:26.030] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:26.057] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:26.081] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:26.108] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:26.134] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:26.162] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:26.188] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:26.216] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:26.242] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:26.276] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:26.309] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:26.345] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:26.371] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:26.407] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:26.438] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:26.477] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:26.506] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:26.534] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:26.562] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:26.593] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:26.625] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:26.658] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:26.695] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:26.735] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:26.768] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:26.796] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:26.822] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:26.849] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:26.875] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:26.908] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:26.942] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:26.981] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:27.019] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:27.052] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:27.079] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:27.107] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:27.133] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:27.160] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:27.188] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:27.216] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:27.245] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:27.273] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:27.306] [info] [cheetah_dot.cc:423] 1@1x31x1 => 1x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:27.342] [info] [cheetah_dot.cc:423] 1@31x1x1 => 31x1x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:27.374] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:27.408] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:27.440] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:27.474] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:27.503] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:27.532] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:27.562] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:27.594] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:27.619] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:27.651] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:27.677] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:27.707] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:27.732] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:27.760] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:27.786] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:27.813] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:27.839] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:27.869] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:27.894] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:27.922] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:27.949] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:27.977] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:28.008] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:28.035] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:28.067] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:28.095] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:28.120] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:28.147] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:28.172] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:28.199] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:28.225] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:28.252] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:28.277] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:28.306] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:28.331] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:28.359] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:28.386] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:28.423] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:28.456] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:28.483] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:28.508] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:28.535] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:28.561] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:28.589] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:28.620] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:28.653] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:28.682] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:28.712] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:28.736] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:28.765] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:28.790] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:28.819] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:28.845] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:28.872] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:28.896] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:28.924] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:28.952] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:28.982] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:29.008] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:29.036] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:29.063] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:29.090] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:29.117] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:29.144] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:29.176] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:29.211] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:29.242] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:29.278] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:29.305] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:29.340] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:29.370] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:29.397] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:29.424] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:29.451] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:29.481] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:29.509] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:29.533] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:29.560] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:29.586] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:29.612] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:29.638] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:29.665] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:29.690] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:29.716] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:29.741] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:29.768] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:29.794] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:29.822] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:29.850] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:29.878] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:29.903] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:29.930] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:29.962] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:29.990] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:30.014] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:30.042] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:30.068] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:30.095] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:30.120] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:30.147] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:30.172] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:30.198] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:30.222] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:30.249] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:30.277] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:30.304] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:30.330] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:30.357] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:30.384] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:30.412] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:30.437] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:30.469] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:30.496] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:30.523] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:30.555] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:30.592] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:30.616] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:30.644] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:30.673] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:30.706] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:30.735] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:30.762] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:30.789] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:30.817] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:30.844] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:30.872] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:30.898] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:30.927] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:30.954] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:30.982] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:31.007] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:31.036] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:31.061] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:31.089] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:31.116] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:31.145] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:31.180] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:31.215] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:31.241] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:31.268] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:31.294] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:31.330] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:31.355] [info] [cheetah_dot.cc:423] 1@1x31x1 => 1x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:31.383] [info] [cheetah_dot.cc:423] 1@31x1x1 => 31x1x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:31.414] [info] [cheetah_dot.cc:423] 1@569x30x1 => 546x30x1 Recv 0.601 MiB, Response 0.751 MiB Pack 0 ms\n"
     ]
    }
   ],
   "source": [
    "result = spsim.sim_jax(sim128, fit_and_predict)(X.values, y.values.reshape(-1, 1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9903083875059457"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "roc_auc_score(y, result)  # auc is just like plaintext"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[2024-02-01 09:25:34.239] [info] [cheetah_dot.cc:295] CheetahDot uses 5@3 modulus 16384 degree for 128 bit ring\n",
      "[2024-02-01 09:25:34.255] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:34.277] [info] [cheetah_mul.cc:347] CheetahMul uses 7 modulus for 128 bit input over 128 bit ring\n",
      "[2024-02-01 09:25:34.277] [info] [cheetah_mul.cc:347] CheetahMul uses 7 modulus for 128 bit input over 128 bit ring\n",
      "[2024-02-01 09:25:34.599] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:34.626] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:34.659] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:34.685] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:34.716] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:34.742] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:34.776] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:34.802] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:34.835] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:34.868] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:34.911] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:34.938] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:34.969] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:34.995] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:35.034] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:35.064] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:35.096] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:35.123] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:35.155] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:35.182] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:35.216] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:35.243] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:35.283] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:35.310] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:35.343] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:35.369] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:35.411] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:35.447] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:35.480] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:35.507] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:35.538] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:35.564] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:35.602] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:35.635] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:35.675] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:35.702] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:35.735] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:35.763] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:35.796] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:35.825] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:35.863] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:35.890] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:35.924] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:35.951] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:35.991] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:36.021] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:36.054] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:36.079] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:36.111] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:36.137] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:36.174] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:36.204] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:36.249] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:36.285] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:36.321] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:36.347] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:36.387] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:36.419] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:36.451] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:36.486] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:36.543] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:36.576] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:36.610] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:36.639] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:36.678] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:36.705] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:36.742] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:36.773] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:36.807] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:36.833] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:36.872] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:36.899] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:36.932] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:36.957] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:36.989] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:37.015] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:37.050] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:37.080] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:37.113] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:37.140] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:37.176] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:37.206] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:37.243] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:37.273] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:37.309] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:37.340] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:37.373] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:37.407] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:37.448] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:37.478] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:37.512] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:37.540] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:37.577] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:37.609] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:37.642] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:37.672] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:37.704] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:37.730] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:37.761] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:37.787] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:37.822] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:37.849] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:37.883] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:37.911] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:37.951] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:37.978] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:38.013] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:38.041] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:38.075] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:38.102] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:38.135] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:38.161] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:38.197] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:38.222] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:38.257] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:38.284] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:38.323] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:38.358] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:38.391] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:38.417] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:38.450] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:38.476] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:38.513] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:38.544] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:38.579] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:38.611] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:38.644] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:38.670] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:38.707] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:38.735] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:38.767] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:38.796] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:38.828] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:38.855] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:38.889] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:38.916] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:38.949] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:38.975] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:39.007] [info] [cheetah_dot.cc:423] 1@8x31x1 => 8x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:39.033] [info] [cheetah_dot.cc:423] 1@31x8x1 => 31x8x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:39.067] [info] [cheetah_dot.cc:423] 1@1x31x1 => 1x31x1 Recv 0.601 MiB, Response 0.368 MiB Pack 0 ms\n",
      "[2024-02-01 09:25:39.098] [info] [cheetah_dot.cc:423] 1@31x1x1 => 31x1x1 Recv 0.601 MiB, Response 0.369 MiB Pack 0 ms\n"
     ]
    }
   ],
   "source": [
    "result = spsim.sim_jax(sim128, get_dk)(X.values, y.values.reshape(-1, 1))[38]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "136.70488"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "From the above outputs, we can guess if input is near $\\frac{1}{2^{18}}$ and use cheetah protocol, when doing `square` and `sum`, the bit error may be significant and not negligible(`mul` and `dot` have 0-2 bit errors)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# Let's test this\n",
    "def test_square_and_sum_when_x_small(x):\n",
    "    return jnp.sum(jnp.square(x))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[2024-02-01 09:25:39.236] [info] [cheetah_mul.cc:347] CheetahMul uses 4 modulus for 64 bit input over 64 bit ring\n",
      "[2024-02-01 09:25:39.236] [info] [cheetah_mul.cc:347] CheetahMul uses 4 modulus for 64 bit input over 64 bit ring\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array(-1.9073486e-05, dtype=float32)"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "spsim.sim_jax(sim, test_square_and_sum_when_x_small)(np.array([1e-5] * 10))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "def test_norm_when_x_small(x):\n",
    "    return jnp.sqrt(jnp.sum(jnp.square(x)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[2024-02-01 09:25:39.330] [info] [cheetah_mul.cc:347] CheetahMul uses 4 modulus for 64 bit input over 64 bit ring\n",
      "[2024-02-01 09:25:39.330] [info] [cheetah_mul.cc:347] CheetahMul uses 4 modulus for 64 bit input over 64 bit ring\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array(0., dtype=float32)"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "spsim.sim_jax(sim, test_norm_when_x_small)(\n",
    "    np.array([1e-5] * 10)\n",
    ")  # for small input, sqrt just output very small number!"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "So if `eps=1e-6`, the two norm of grad may be a negative number when each element of grad is near to $\\frac{1}{2^{18}}$, then we get a very small negative dk.\n",
    "\n",
    "This explains the claims we get from app layer:  \n",
    "1. Enlarging `batch_size`: the probability of all elements of grad is zero becomes small.\n",
    "\n",
    "2. Enlarging `eps`: force the denominator to be positive number."
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "#### 3PC: ABY3 Protocol\n",
    "\n",
    "We still check the dk_arr first."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "result = spsim.sim_jax(sim_aby, get_dk)(X.values, y.values.reshape(-1, 1))"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "emmmmmm, strange value occurs again, we find **0** in dk_arr!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.0"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result[66]"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "Comparing with small negative number, 0 is a mild error for our update procedure. It just does nothing in that iter, so the final auc may drop a little(from 0.99 to 0.97, users can test yourself that if you set eps to 1e-2, then the result will be very stable)."
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "Likewise, We always check the computation of 2-norm."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(0., dtype=float32)"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "spsim.sim_jax(sim_aby, test_norm_when_x_small)(\n",
    "    np.array([1e-5] * 10)\n",
    ")  # get 0 is acceptable"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Array(3.1622774e-05, dtype=float32)"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_norm_when_x_small(np.array([1e-5] * 10))  # 2-norm in plaintext"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "Then, check the reciprocal op."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "def test_reciprocal_when_x_small(x):\n",
    "    return 1 / (x + 1e-6)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.], dtype=float32)"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# get 0 when denominator very small, which is the caveat of reciprocal!\n",
    "spsim.sim_jax(sim_aby, test_reciprocal_when_x_small)(np.array([0]))"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "### Something More\n",
    "\n",
    "Indeed, there are some other interesting things in SSLR. Here, due to length limitations, we just give some hints, and readers can do more simulations yourself!"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "#### Rsqrt v.s. Norm\n",
    "\n",
    "We can recall that the `compute_dk_func` function defined in Part 1 contains a `method` arg, and we just ignore this arg before. Indeed, we can tell simulator to print more information like [spu_inside](https://www.secretflow.org.cn/docs/spu/latest/en-US/tutorials/spu_inside#Tracing) do: enable **hlo**(High Level Operations) trace and profile on. Then we can figure out which op has been invoked and its time cost.\n",
    "\n",
    "Here, we list some advantages of using `jax.lax.rsqrt` rather than `jnp.linalg.norm`:\n",
    "\n",
    "1. Fewer bytes and few send actions: which leads to smaller running time(See the following comments and notes for details).\n",
    "\n",
    "2. More stable when given same `eps`: if we regard `f(x)` as `compute_dk_func` with `method=norm`, and `g(x)` with `method=rsqrt`, then the users can do simulation yourself, and find `f(x)` has higher relative error than `g(x)`.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# we define a cheetah config with pphlo trace and profile on\n",
    "config_che = spu.RuntimeConfig(\n",
    "    protocol=spu_pb2.ProtocolKind.CHEETAH,\n",
    "    field=spu.FieldType.FM64,\n",
    "    fxp_fraction_bits=18,\n",
    "    enable_pphlo_trace=True,\n",
    "    enable_pphlo_profile=True,\n",
    ")\n",
    "simulator_che = spsim.Simulator(2, config_che)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[2024-02-01 09:25:41.508] [info] [pphlo_executor.cc:1324] PPHLO %0 = pphlo.constant dense<9.99999997E-7> : tensor<f32>\n",
      "[2024-02-01 09:25:41.508] [info] [pphlo_executor.cc:1324] PPHLO %0 = pphlo.constant dense<9.99999997E-7> : tensor<f32>\n",
      "[2024-02-01 09:25:41.508] [info] [pphlo_executor.cc:1324] PPHLO %1 = pphlo.constant dense<0.000000e+00> : tensor<f32>\n",
      "[2024-02-01 09:25:41.508] [info] [pphlo_executor.cc:1324] PPHLO %1 = pphlo.constant dense<0.000000e+00> : tensor<f32>\n",
      "[2024-02-01 09:25:41.508] [info] [pphlo_executor.cc:1324] PPHLO %2 = pphlo.constant dense<1.000000e+00> : tensor<f32>\n",
      "[2024-02-01 09:25:41.508] [info] [pphlo_executor.cc:1324] PPHLO %2 = pphlo.constant dense<1.000000e+00> : tensor<f32>\n",
      "[2024-02-01 09:25:41.508] [info] [pphlo_executor.cc:1324] PPHLO %3 = pphlo.multiply %arg0, %arg0 : tensor<1000x!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:41.508] [info] [pphlo_executor.cc:1324] PPHLO %3 = pphlo.multiply %arg0, %arg0 : tensor<1000x!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:41.516] [info] [cheetah_mul.cc:347] CheetahMul uses 4 modulus for 64 bit input over 64 bit ring\n",
      "[2024-02-01 09:25:41.516] [info] [cheetah_mul.cc:347] CheetahMul uses 4 modulus for 64 bit input over 64 bit ring\n",
      "[2024-02-01 09:25:41.563] [info] [pphlo_executor.cc:1324] PPHLO %4 = pphlo.convert %1 : (tensor<f32>) -> tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:41.563] [info] [pphlo_executor.cc:1324] PPHLO %4 = pphlo.convert %1 : (tensor<f32>) -> tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:41.563] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %1 : tensor<f32>\n",
      "[2024-02-01 09:25:41.563] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %1 : tensor<f32>\n",
      "[2024-02-01 09:25:41.563] [info] [pphlo_executor.cc:1324] PPHLO %5 = pphlo.reduce(%3 init: %4) applies pphlo.add across dimensions = [0] : (tensor<1000x!pphlo.secret<f32>>, tensor<!pphlo.secret<f32>>) -> tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:41.563] [info] [pphlo_executor.cc:1324] PPHLO %5 = pphlo.reduce(%3 init: %4) applies pphlo.add across dimensions = [0] : (tensor<1000x!pphlo.secret<f32>>, tensor<!pphlo.secret<f32>>) -> tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:41.563] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %4 : tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:41.563] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %4 : tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:41.563] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %3 : tensor<1000x!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:41.563] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %3 : tensor<1000x!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:41.563] [info] [pphlo_executor.cc:1324] PPHLO %6 = pphlo.sqrt %5 : tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:41.563] [info] [pphlo_executor.cc:1324] PPHLO %6 = pphlo.sqrt %5 : tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:41.826] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %5 : tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:41.826] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %5 : tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:41.826] [info] [pphlo_executor.cc:1324] PPHLO %7 = pphlo.add %6, %0 : (tensor<!pphlo.secret<f32>>, tensor<f32>) -> tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:41.826] [info] [pphlo_executor.cc:1324] PPHLO %7 = pphlo.add %6, %0 : (tensor<!pphlo.secret<f32>>, tensor<f32>) -> tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:41.826] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %0 : tensor<f32>\n",
      "[2024-02-01 09:25:41.826] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %6 : tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:41.826] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %0 : tensor<f32>\n",
      "[2024-02-01 09:25:41.826] [info] [pphlo_executor.cc:1324] PPHLO %8 = pphlo.divide %2, %7 : (tensor<f32>, tensor<!pphlo.secret<f32>>) -> tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:41.826] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %6 : tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:41.826] [info] [pphlo_executor.cc:1324] PPHLO %8 = pphlo.divide %2, %7 : (tensor<f32>, tensor<!pphlo.secret<f32>>) -> tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.099] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %7 : tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.099] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %2 : tensor<f32>\n",
      "[2024-02-01 09:25:42.099] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %7 : tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.099] [info] [api.cc:158] [Profiling] SPU execution compute_dk_func completed, input processing took 6.31e-07s, execution took 0.591243347s, output processing took 1.362e-06s, total time 0.59124534s.\n",
      "[2024-02-01 09:25:42.099] [info] [api.cc:191] HLO profiling: total time 0.590136151\n",
      "[2024-02-01 09:25:42.099] [info] [api.cc:194] - pphlo.add, executed 1 times, duration 8.275e-06s, send bytes 0\n",
      "[2024-02-01 09:25:42.099] [info] [api.cc:194] - pphlo.constant, executed 3 times, duration 9.327e-06s, send bytes 0\n",
      "[2024-02-01 09:25:42.099] [info] [api.cc:194] - pphlo.convert, executed 1 times, duration 2.3514e-05s, send bytes 0\n",
      "[2024-02-01 09:25:42.099] [info] [api.cc:194] - pphlo.divide, executed 1 times, duration 0.27218333s, send bytes 1317\n",
      "[2024-02-01 09:25:42.099] [info] [ap"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array(0.05480957, dtype=float32)"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "i.cc:194] - pphlo.free, executed 8 times, duration 3.407e-06s, send bytes 0\n",
      "[2024-02-01 09:25:42.099] [info] [api.cc:194] - pphlo.multiply, executed 1 times, duration 0.05489884s, send bytes 792973\n",
      "[2024-02-01 09:25:42.099] [info] [api.cc:194] - pphlo.reduce, executed 1 times, duration 0.000139253s, send bytes 0\n",
      "[2024-02-01 09:25:42.099] [info] [api.cc:194] - pphlo.sqrt, executed 1 times, duration 0.262870205s, send bytes 267268\n",
      "[2024-02-01 09:25:42.099] [info] [api.cc:204] Link details: total send bytes 1061558, send actions 2336\n",
      "[2024-02-01 09:25:42.099] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %2 : tensor<f32>\n"
     ]
    }
   ],
   "source": [
    "spsim.sim_jax(simulator_che, partial(compute_dk_func, method='norm'))(\n",
    "    np.arange(1000) / 1000\n",
    ")"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "If directly invoking rsqrt, you can find send actions have obvious drop!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[2024-02-01 09:25:42.179] [info] [pphlo_executor.cc:1324] PPHLO %0 = pphlo.constant dense<9.99999997E-7> : tensor<f32>\n",
      "[2024-02-01 09:25:42.179] [info] [pphlo_executor.cc:1324] PPHLO %1 = pphlo.constant dense<0.000000e+00> : tensor<f32>\n",
      "[2024-02-01 09:25:42.179] [info] [pphlo_executor.cc:1324] PPHLO %0 = pphlo.constant dense<9.99999997E-7> : tensor<f32>\n",
      "[2024-02-01 09:25:42.179] [info] [pphlo_executor.cc:1324] PPHLO %2 = pphlo.multiply %arg0, %arg0 : tensor<1000x!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.179] [info] [pphlo_executor.cc:1324] PPHLO %1 = pphlo.constant dense<0.000000e+00> : tensor<f32>\n",
      "[2024-02-01 09:25:42.179] [info] [pphlo_executor.cc:1324] PPHLO %2 = pphlo.multiply %arg0, %arg0 : tensor<1000x!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.187] [info] [cheetah_mul.cc:347] CheetahMul uses 4 modulus for 64 bit input over 64 bit ring\n",
      "[2024-02-01 09:25:42.187] [info] [cheetah_mul.cc:347] CheetahMul uses 4 modulus for 64 bit input over 64 bit ring\n",
      "[2024-02-01 09:25:42.238] [info] [pphlo_executor.cc:1324] PPHLO %3 = pphlo.convert %1 : (tensor<f32>) -> tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.238] [info] [pphlo_executor.cc:1324] PPHLO %3 = pphlo.convert %1 : (tensor<f32>) -> tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.238] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %1 : tensor<f32>\n",
      "[2024-02-01 09:25:42.238] [info] [pphlo_executor.cc:1324] PPHLO %4 = pphlo.reduce(%2 init: %3) applies pphlo.add across dimensions = [0] : (tensor<1000x!pphlo.secret<f32>>, tensor<!pphlo.secret<f32>>) -> tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.238] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %1 : tensor<f32>\n",
      "[2024-02-01 09:25:42.238] [info] [pphlo_executor.cc:1324] PPHLO %4 = pphlo.reduce(%2 init: %3) applies pphlo.add across dimensions = [0] : (tensor<1000x!pphlo.secret<f32>>, tensor<!pphlo.secret<f32>>) -> tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.238] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %3 : tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.238] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %2 : tensor<1000x!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.238] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %3 : tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.238] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %2 : tensor<1000x!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.238] [info] [pphlo_executor.cc:1324] PPHLO %5 = pphlo.add %4, %0 : (tensor<!pphlo.secret<f32>>, tensor<f32>) -> tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.238] [info] [pphlo_executor.cc:1324] PPHLO %5 = pphlo.add %4, %0 : (tensor<!pphlo.secret<f32>>, tensor<f32>) -> tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.238] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %0 : tensor<f32>\n",
      "[2024-02-01 09:25:42.238] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %0 : tensor<f32>\n",
      "[2024-02-01 09:25:42.238] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %4 : tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.238] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %4 : tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.238] [info] [pphlo_executor.cc:1324] PPHLO %6 = pphlo.rsqrt %5 : tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.238] [info] [pphlo_executor.cc:1324] PPHLO %6 = pphlo.rsqrt %5 : tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.511] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %5 : tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.511] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %5 : tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.511] [info] [api.cc:158] [Profiling] SPU execution compute_dk_func completed, input processing took 4.1e-07s, execution took 0.331859851s, output processing took 4.368e-06s, total time 0.331864629s.\n",
      "[2024-02-01 09:25:42.511] [info] [api.cc:191] HLO profiling: total time 0.33095442399999997\n",
      "[2024-02-01 09:25:42.511] [info] [api.cc:194] - pphlo.add, executed 1 times, duration 6.492e-06s, send bytes 0\n",
      "[2024-02-01 09:25:42.511] [info] [api.cc:194] - pphlo.constant, executed 2 times, duration 8.014e-06s, send bytes 0\n",
      "[2024-02-01 09:25:42.511] [info] [api.cc:194] - pphlo.convert, executed 1 times, duration 3.7882e-05s, send bytes 0\n",
      "[2024-02-01 09:25:42.511] [info] [api.cc:194] - pphlo.free, executed 6 times, duration 2.345e-06s, send bytes 0\n",
      "[2024-02-01 09:25:42.511] [info] [api.cc:194] - pphlo.multiply, executed 1 times, duration 0.058424512s, send bytes 793029\n",
      "[2024-02-01 09:25:42.511] [info] [api.cc:194] - pphlo.reduce, executed 1 times, duration 0.000160953s, send bytes 0\n",
      "[2024-02-01 09:25:42.511] [info] [api.cc:194] - pphlo.rsqrt, executed 1 times, duration 0.272314226s, send bytes 267165\n",
      "[2024-02-01 09:25:42.511] [info] [api.cc:204] Link details: total send bytes 1060194, send actions 2261\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array(0.05480957, dtype=float32)"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Note:\n",
    "# 1. the total time cost by rsqrt may be even larger than norm, the reason of this is that CHEETAH use FHE, so the cost of multiply is very huge comparing to other ops.\n",
    "# 2. time(rsqrt) = 0.005607 < time(sqrt+divide) = 0.00812 + 0.00283\n",
    "spsim.sim_jax(simulator_che, partial(compute_dk_func, method='rsqrt'))(\n",
    "    np.arange(1000) / 1000\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# Also, we can define an aby3 config with pphlo trace and profile on\n",
    "config_aby = spu.RuntimeConfig(\n",
    "    protocol=spu_pb2.ProtocolKind.ABY3,\n",
    "    field=spu.FieldType.FM64,\n",
    "    fxp_fraction_bits=18,\n",
    "    enable_pphlo_trace=True,\n",
    "    enable_pphlo_profile=True,\n",
    ")\n",
    "simulator_aby = spsim.Simulator(3, config_aby)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[2024-02-01 09:25:42.587] [info] [pphlo_executor.cc:1324] PPHLO %0 = pphlo.constant dense<9.99999997E-7> : tensor<f32>\n",
      "[2024-02-01 09:25:42.587] [info] [pphlo_executor.cc:1324] PPHLO %0 = pphlo.constant dense<9.99999997E-7> : tensor<f32>\n",
      "[2024-02-01 09:25:42.587] [info] [pphlo_executor.cc:1324] PPHLO %0 = pphlo.constant dense<9.99999997E-7> : tensor<f32>\n",
      "[2024-02-01 09:25:42.587] [info] [pphlo_executor.cc:1324] PPHLO %1 = pphlo.constant dense<0.000000e+00> : tensor<f32>\n",
      "[2024-02-01 09:25:42.587] [info] [pphlo_executor.cc:1324] PPHLO %1 = pphlo.constant dense<0.000000e+00> : tensor<f32>\n",
      "[2024-02-01 09:25:42.587] [info] [pphlo_executor.cc:1324] PPHLO %1 = pphlo.constant dense<0.000000e+00> : tensor<f32>\n",
      "[2024-02-01 09:25:42.587] [info] [pphlo_executor.cc:1324] PPHLO %2 = pphlo.constant dense<1.000000e+00> : tensor<f32>\n",
      "[2024-02-01 09:25:42.587] [info] [pphlo_executor.cc:1324] PPHLO %2 = pphlo.constant dense<1.000000e+00> : tensor<f32>\n",
      "[2024-02-01 09:25:42.587] [info] [pphlo_executor.cc:1324] PPHLO %3 = pphlo.multiply %arg0, %arg0 : tensor<1000x!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.587] [info] [pphlo_executor.cc:1324] PPHLO %2 = pphlo.constant dense<1.000000e+00> : tensor<f32>\n",
      "[2024-02-01 09:25:42.587] [info] [pphlo_executor.cc:1324] PPHLO %3 = pphlo.multiply %arg0, %arg0 : tensor<1000x!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.587] [info] [pphlo_executor.cc:1324] PPHLO %3 = pphlo.multiply %arg0, %arg0 : tensor<1000x!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.587] [info] [pphlo_executor.cc:1324] PPHLO %4 = pphlo.convert %1 : (tensor<f32>) -> tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.587] [info] [pphlo_executor.cc:1324] PPHLO %4 = pphlo.convert %1 : (tensor<f32>) -> tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.587] [info] [pphlo_executor.cc:1324] PPHLO %4 = pphlo.convert %1 : (tensor<f32>) -> tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.587] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %1 : tensor<f32>\n",
      "[2024-02-01 09:25:42.587] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %1 : tensor<f32>\n",
      "[2024-02-01 09:25:42.587] [info] [pphlo_executor.cc:1324] PPHLO %5 = pphlo.reduce(%3 init: %4) applies pphlo.add across dimensions = [0] : (tensor<1000x!pphlo.secret<f32>>, tensor<!pphlo.secret<f32>>) -> tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.587] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %1 : tensor<f32>\n",
      "[2024-02-01 09:25:42.587] [info] [pphlo_executor.cc:1324] PPHLO %5 = pphlo.reduce(%3 init: %4) applies pphlo.add across dimensions = [0] : (tensor<1000x!pphlo.secret<f32>>, tensor<!pphlo.secret<f32>>) -> tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.587] [info] [pphlo_executor.cc:1324] PPHLO %5 = pphlo.reduce(%3 init: %4) applies pphlo.add across dimensions = [0] : (tensor<1000x!pphlo.secret<f32>>, tensor<!pphlo.secret<f32>>) -> tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.587] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %4 : tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.587] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %4 : tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.587] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %3 : tensor<1000x!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.587] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %3 : tensor<1000x!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.587] [info] [pphlo_executor.cc:1324] PPHLO %6 = pphlo.sqrt %5 : tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.587] [info] [pphlo_executor.cc:1324] PPHLO %6 = pphlo.sqrt %5 : tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.587] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %4 : tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.587] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %3 : tensor<1000x!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.587] [info] [pphlo_executor.cc:1324] PPHLO %6 = pphlo.sqrt %5 : tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.588] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %5 : tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.588] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %5 : tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.588] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %5 : tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.588] [info] [pphlo_executor.cc:1324] PPHLO %7 = pphlo.add %6, %0 : (tensor<!pphlo.secret<f32>>, tensor<f32>) -> tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.588] [info] [pphlo_executor.cc:1324] PPHLO %7 = pphlo.add %6, %0 : (tensor<!pphlo.secret<f32>>, tensor<f32>) -> tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.588] [info] [pphlo_executor.cc:1324] PPHLO %7 = pphlo.add %6, %0 : (tensor<!pphlo.secret<f32>>, tensor<f32>) -> tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.588] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %0 : tensor<f32>\n",
      "[2024-02-01 09:25:42.588] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %6 : tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.588] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %0 : tensor<f32>\n",
      "[2024-02-01 09:25:42.588] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %0 : tensor<f32>\n",
      "[2024-02-01 09:25:42.588] [info] [pphlo_executor.cc:1324] PPHLO %8 = pphlo.divide %2, %7 : (tensor<f32>, tensor<!pphlo.secret<f32>>) -> tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.588] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %6 : tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.588] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %6 : tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.588] [info] [pphlo_executor.cc:1324] PPHLO %8 = pphlo.divide %2, %7 : (tensor<f32>, tensor<!pphlo.secret<f32>>) -> tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.588] [info] [pphlo_executor.cc:1324] PPHLO %8 = pphlo.divide %2, %7 : (tensor<f32>, tensor<!pphlo.secret<f32>>) -> tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.589] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %7 : tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.589] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %7 : tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.589] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %7 : tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.589] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %2 : tensor<f32>\n",
      "[2024-02-01 09:25:42.589] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %2 : tensor<f32>\n",
      "[2024-02-01 09:25:42.589] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %2 : tensor<f32>\n",
      "[2024-02-01 09:25:42.589] [info] [api.cc:158] [Profiling] SPU execution compute_dk_func completed, input processing took 4.11e-07s, execution took 0.003135366s, output processing took 5.11e-07s, total time 0.003136288s.\n",
      "[2024-02-01 09:25:42.589] [info] [api.cc:191] HLO profiling: total time 0.002323316\n",
      "[2024-02-01 09:25:42.589] [info] [api.cc:194] - pphlo.add, executed 1 times, duration 5.12e-06s, send bytes 0\n",
      "[2024-02-01 09:25:42.589] [info] [api.cc:194] - pphlo.constant, executed 3 times, duration 8.377e-06s, send bytes 0\n",
      "[2024-02-01 09:25:42.589] [info] [api.cc:194] - pphlo.convert, executed 1 times, duration 1.049e-05s, send bytes 8\n",
      "[2024-02-01 09:25:42.589] [info] [api.cc:194] - pphlo.divide, executed 1 times, duration 0.000876562s, send bytes 632\n",
      "[2024-02-01 09:25:42.589] [info] [api.cc:194] - pphlo.free, executed 8 times, duration 2.823e-06s, send bytes 0\n",
      "[2024-02-01 09:25:42.589] [info] [api.cc:194] - pphlo.multiply, executed 1 times, duration 0.000124595s, send bytes 24000\n",
      "[2024-02-01 09:25:42.589] [info] [api.cc:194] - pphlo.reduce, executed 1 times, duration 0.000151134s, send bytes 0\n",
      "[2024-02-01 09:25:42.589] [info] [api.cc:194] - pphlo.sqrt, executed 1 times, duration 0.001144215s, send bytes 724\n",
      "[2024-02-01 09:25:42.589] [info] [api.cc:204] Link details: total send bytes 25364, send actions 132\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array(0.05480957, dtype=float32)"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "spsim.sim_jax(simulator_aby, partial(compute_dk_func, method='norm'))(\n",
    "    np.arange(1000) / 1000\n",
    ")"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "When using aby3, you can find both the send actions and send bytes drop large if using rsqrt!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[2024-02-01 09:25:42.611] [info] [pphlo_executor.cc:1324] PPHLO %0 = pphlo.constant dense<9.99999997E-7> : tensor<f32>\n",
      "[2024-02-01 09:25:42.611] [info] [pphlo_executor.cc:1324] PPHLO %0 = pphlo.constant dense<9.99999997E-7> : tensor<f32>\n",
      "[2024-02-01 09:25:42.611] [info] [pphlo_executor.cc:1324] PPHLO %1 = pphlo.constant dense<0.000000e+00> : tensor<f32>\n",
      "[2024-02-01 09:25:42.611] [info] [pphlo_executor.cc:1324] PPHLO %1 = pphlo.constant dense<0.000000e+00> : tensor<f32>\n",
      "[2024-02-01 09:25:42.611] [info] [pphlo_executor.cc:1324] PPHLO %2 = pphlo.multiply %arg0, %arg0 : tensor<1000x!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.611] [info] [pphlo_executor.cc:1324] PPHLO %2 = pphlo.multiply %arg0, %arg0 : tensor<1000x!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.611] [info] [pphlo_executor.cc:1324] PPHLO %0 = pphlo.constant dense<9.99999997E-7> : tensor<f32>\n",
      "[2024-02-01 09:25:42.611] [info] [pphlo_executor.cc:1324] PPHLO %1 = pphlo.constant dense<0.000000e+00> : tensor<f32>\n",
      "[2024-02-01 09:25:42.611] [info] [pphlo_executor.cc:1324] PPHLO %2 = pphlo.multiply %arg0, %arg0 : tensor<1000x!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.612] [info] [pphlo_executor.cc:1324] PPHLO %3 = pphlo.convert %1 : (tensor<f32>) -> tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.612] [info] [pphlo_executor.cc:1324] PPHLO %3 = pphlo.convert %1 : (tensor<f32>) -> tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.612] [info] [pphlo_executor.cc:1324] PPHLO %3 = pphlo.convert %1 : (tensor<f32>) -> tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.612] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %1 : tensor<f32>\n",
      "[2024-02-01 09:25:42.612] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %1 : tensor<f32>\n",
      "[2024-02-01 09:25:42.612] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %1 : tensor<f32>\n",
      "[2024-02-01 09:25:42.612] [info] [pphlo_executor.cc:1324] PPHLO %4 = pphlo.reduce(%2 init: %3) applies pphlo.add across dimensions = [0] : (tensor<1000x!pphlo.secret<f32>>, tensor<!pphlo.secret<f32>>) -> tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.612] [info] [pphlo_executor.cc:1324] PPHLO %4 = pphlo.reduce(%2 init: %3) applies pphlo.add across dimensions = [0] : (tensor<1000x!pphlo.secret<f32>>, tensor<!pphlo.secret<f32>>) -> tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.612] [info] [pphlo_executor.cc:1324] PPHLO %4 = pphlo.reduce(%2 init: %3) applies pphlo.add across dimensions = [0] : (tensor<1000x!pphlo.secret<f32>>, tensor<!pphlo.secret<f32>>) -> tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.612] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %3 : tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.612] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %3 : tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.612] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %2 : tensor<1000x!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.612] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %2 : tensor<1000x!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.612] [info] [pphlo_executor.cc:1324] PPHLO %5 = pphlo.add %4, %0 : (tensor<!pphlo.secret<f32>>, tensor<f32>) -> tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.612] [info] [pphlo_executor.cc:1324] PPHLO %5 = pphlo.add %4, %0 : (tensor<!pphlo.secret<f32>>, tensor<f32>) -> tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.612] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %3 : tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.612] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %0 : tensor<f32>\n",
      "[2024-02-01 09:25:42.612] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %0 : tensor<f32>\n",
      "[2024-02-01 09:25:42.612] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %2 : tensor<1000x!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.612] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %4 : tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.612] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %4 : tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.612] [info] [pphlo_executor.cc:1324] PPHLO %6 = pphlo.rsqrt %5 : tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.612] [info] [pphlo_executor.cc:1324] PPHLO %6 = pphlo.rsqrt %5 : tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.612] [info] [pphlo_executor.cc:1324] PPHLO %5 = pphlo.add %4, %0 : (tensor<!pphlo.secret<f32>>, tensor<f32>) -> tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.612] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %0 : tensor<f32>\n",
      "[2024-02-01 09:25:42.612] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %4 : tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.612] [info] [pphlo_executor.cc:1324] PPHLO %6 = pphlo.rsqrt %5 : tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.613] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %5 : tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.613] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %5 : tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.613] [info] [pphlo_executor.cc:1324] PPHLO pphlo.free %5 : tensor<!pphlo.secret<f32>>\n",
      "[2024-02-01 09:25:42.613] [info] [api.cc:158] [Profiling] SPU execution compute_dk_func completed, input processing took 2.034e-06s, execution took 0.002462529s, output processing took 4.81e-07s, total time 0.002465044s.\n",
      "[2024-02-01 09:25:42.613] [info] [api.cc:191] HLO profiling: total time 0.001713927\n",
      "[2024-02-01 09:25:42.613] [info] [api.cc:194] - pphlo.add, executed 1 times, duration 5.54e-06s, send bytes 0\n",
      "[2024-02-01 09:25:42.613] [info] [api.cc:194] - pphlo.constant, executed 2 times, duration 7.515e-06s, send bytes 0\n",
      "[2024-02-01 09:25:42.613] [info] [api.cc:194] - pphlo.convert, executed 1 times, duration 4.6748e-05s, send bytes 8\n",
      "[2024-02-01 09:25:42.613] [info] [api.cc:194] - pphlo.free, executed 6 times, duration 2.694e-06s, send bytes 0\n",
      "[2024-02-01 09:25:42.613] [info] [api.cc:194] - pphlo.multiply, executed 1 times, duration 0.000352884s, send bytes 40000\n",
      "[2024-02-01 09:25:42.613] [info] [api.cc:194] - pphlo.reduce, executed 1 times, duration 0.000152697s, send bytes 0\n",
      "[2024-02-01 09:25:42.613] [info] [api.cc:194] - pphlo.rsqrt, executed 1 times, duration 0.001145849s, send bytes 564\n",
      "[2024-02-01 09:25:42.613] [info] [api.cc:204] Link details: total send bytes 40572, send actions 55\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array(0.05480576, dtype=float32)"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Note:\n",
    "# 1. you can find total time of rsqrt will always smaller than norm\n",
    "# 2. likewise, time(rsqrt) = 0.003096 < time(sqrt+divide) = 0.003601 + 0.002891\n",
    "\n",
    "spsim.sim_jax(simulator_aby, partial(compute_dk_func, method='rsqrt'))(\n",
    "    np.arange(1000) / 1000\n",
    ")"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "#### Computing Loss\n",
    "\n",
    "Many ML frameworks will show validation loss during training procedure when using a validation dataset. It's straight to compute the loss in LR as follows:\n",
    "$$ loss = -\\frac{1}{N} \\sum_{i=1}^N [y_i log(p_i) + (1-y_i) log(1-p_i)] \\quad  (1) $$\n",
    "But when you use t1 approximation for sigmoid, then you may come across $log(0)$ problem. Here, we list two potential recipes to alleviate it.\n",
    "\n",
    "1. **Costly but accurate**: we plug in $p_i = \\frac{1}{1+e^{-w^Tx_i}}$ to (1), then we can get:\n",
    "$$ loss = -\\frac{1}{N} \\sum_{i=1}^N [y_i w^Tx_i - log(1+e^{w^Tx_i})] \\quad  (2) $$\n",
    "this formula solve the $log(0)$ problem, but if $w^Tx_i$ gets too large, as we already know in [pitfall](https://www.secretflow.org.cn/docs/spu/en/reference/fxp.html), this gets **huge errors**! To get stable and accurate formula to compute loss, we notice $log(1+e^{w^T x_i})$ is well-known *Softplus* function, so we can use the equation of Softplus: $log(1+e^{x}) = log(1 + e^{-|x|}) + max(0, x)$, then we can get:\n",
    "$$ loss = -\\frac{1}{N} \\sum_{i=1}^N [y_i w^Tx_i - log(1+e^{-|w^Tx_i|}) - max(w^T x_i, 0)] \\quad (3) $$\n",
    "\n",
    "2. **Cheap but approximate** :Equation (3) can give accurate result, but it contains time-consuming ops($log$, $exp$), which cost a lot! If you just want to compute an approximation of loss(e.g. maybe you want to do early stop with loss), you can try Taylor expansion, which gives:\n",
    "$$ loss = \\frac{1}{N} \\sum_{i=1}^N [log(2) - (y-0.5)w^T x_i + 0.125 * (w^T x_i)^2] $$"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "## Part 3: Run elaborated emulations\n",
    "\n",
    "> Emulations is an **experimental** feature for now, and is under rapid development, so we do not package the code of sml into spu. Users can try this feature from **source code** and run with bazel .Till now, we only have support for LAN setting(`MULTIPROCESS` mode). `Docker` mode, which runs program like under WAN setting, will be posted in future version.\n",
    "\n",
    "Finally, we talk about how to do emulations. Comparing to simulator, emulator runs with a simple scheduler like Secretflow does, and offers some facility(e.g. generate mock data) to make benchmark simpler. So spu provides an `Emulator` class and gives an easy-to-use interface."
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "Usually, the emulation will be done with larger dataset, so we won't run directly in this tutorial notebook. Instead, we will show a big picture on how to design and run emulations for MPC application step by step."
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "### Setup: define running function\n",
    "\n",
    "Just like what we do in secretflow, we should first define a python function, which will be run in spu. Here, as an example, we just define a very simple function that accepts data from two parties and return the predicted probability after the model trained(you can also split data into training & validation parts, and return the probs of validation dataset.).\n",
    "\n",
    "Taking `SSLRSGDClassifier` as an example, we mainly want to argue that policy-sgd is better than naive-sgd in MPC setting, so we can design the following experiments: \n",
    "\n",
    "1. Find best `dk_method` and `eps` for policy-sgd: for all datasets, compare the accuracy and efficiency.\n",
    "\n",
    "2. Compare the accuracy and efficiency when switching `sig_type` for both policy-sgd and naive-sgd.\n",
    "\n",
    "3. To compare policy-sgd and naive-sgd, we fix `epochs` and test the influence of `learning_rate` and `batch_size`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# import library\n",
    "import sml.utils.emulation as emulation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# import model impl which has been tested with simulator\n",
    "# from Model import model\n",
    "\n",
    "\n",
    "def run_model(x1, x2, y):\n",
    "    # here, suppose we divide the dataset into two party\n",
    "    x = jnp.concatenate((x1, x2), axis=1)\n",
    "    y = y.reshape((y.shape[0], 1))\n",
    "\n",
    "    # for sig_type in ['t1', 'sr']\n",
    "    # for dk_method in ['norm', 'rsqrt']\n",
    "    # for batch_size in [1024, 2048, 4096]\n",
    "    # ...\n",
    "    model = SSLRSGDClassifier(\n",
    "        epochs=10,\n",
    "        learning_rate=0.1,\n",
    "        batch_size=2048,\n",
    "        sig_type='t1',\n",
    "        eps=1e-4,\n",
    "        dk_method='rsqrt',\n",
    "    )\n",
    "\n",
    "    model.fit(x, y)\n",
    "    return model.predict_proba(x)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "### Define running config\n",
    "\n",
    "After designing all the experiments, we can prepare our running config. Currently, we only support `MULTIPROCESS` mode, which uses multiprocess to emulate multi-party and just like running in LAN(`DOCKER` mode which can set `bandwidth` and `latency` to simulate the different WAN settings will be supported in future version).\n",
    "\n",
    "For now, our goal is to compare the accuracy/efficiency diff when switching hyper-param, running program in LAN can be a good choice. Besides, in order to simulate diverse node deployment ways, users can flexibly configure the number of nodes and device situations yourself. You can get some examples of config in `examples/python/conf/`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[2024-02-01 09:25:42,688] Start multiprocess cluster...\n",
      "[2024-02-01 09:25:42,729] [Process-1] Starting grpc server at 127.0.0.1:61920\n",
      "[2024-02-01 09:25:42,756] [Process-2] Starting grpc server at 127.0.0.1:61921\n",
      "[2024-02-01 09:25:42,783] [Process-3] Starting grpc server at 127.0.0.1:61922\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[2024-02-01 09:25:42,810] [Process-4] Starting grpc server at 127.0.0.1:61923\n",
      "[2024-02-01 09:25:42,837] [Process-5] Starting grpc server at 127.0.0.1:61924\n",
      "[2024-02-01 09:25:43,840] [Process-1] Run : builtin_spu_init at node:0\n",
      "[2024-02-01 09:25:43,840] [Process-2] Run : builtin_spu_init at node:1\n",
      "[2024-02-01 09:25:43,840] [Process-3] Run : builtin_spu_init at node:2\n",
      "[2024-02-01 09:25:43,849] [Process-2] spu-runtime (SPU) initialized\n",
      "[2024-02-01 09:25:43,849] [Process-3] spu-runtime (SPU) initialized\n",
      "[2024-02-01 09:25:43,849] [Process-1] spu-runtime (SPU) initialized\n",
      "I0201 09:25:43.846532 1476252 external/com_github_brpc_brpc/src/brpc/server.cpp:1158] Server[yacl::link::transport::internal::ReceiverServiceImpl] is serving on port=61930.\n",
      "W0201 09:25:43.846553 1476252 external/com_github_brpc_brpc/src/brpc/server.cpp:1164] Builtin services are disabled according to ServerOptions.has_builtin_services\n",
      "I0201 09:25:43.846567 1476253 external/com_github_brpc_brpc/src/brpc/server.cpp:1158] Server[yacl::link::transport::internal::ReceiverServiceImpl] is serving on port=61932.\n",
      "W0201 09:25:43.846586 1476253 external/com_github_brpc_brpc/src/brpc/server.cpp:1164] Builtin services are disabled according to ServerOptions.has_builtin_services\n",
      "I0201 09:25:43.846788 1476254 external/com_github_brpc_brpc/src/brpc/server.cpp:1158] Server[yacl::link::transport::internal::ReceiverServiceImpl] is serving on port=61931.\n",
      "W0201 09:25:43.846806 1476254 external/com_github_brpc_brpc/src/brpc/server.cpp:1164] Builtin services are disabled according to ServerOptions.has_builtin_services\n"
     ]
    }
   ],
   "source": [
    "mode = emulation.Mode.MULTIPROCESS  # emulation.Mode.DOCKER for docker not support now\n",
    "# take the mock config as sample, it deploys some nodes in outsourcing way and use ABY3 protocol\n",
    "# Note: in MULTIPROCESS mode, bandwidth and latency are NOT working!\n",
    "emulator = emulation.Emulator(\n",
    "    emulation.CLUSTER_ABY3_3PC, mode, bandwidth=100, latency=10\n",
    ")\n",
    "# start up the running processes or containers\n",
    "emulator.up()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[2024-02-01 09:25:43,864] [Process-4] Run : <lambda> at node:3\n",
      "[2024-02-01 09:25:43,869] [Process-4] Run : <lambda> at node:3\n",
      "[2024-02-01 09:25:43,871] [Process-4] Run : <lambda> at node:3\n",
      "[2024-02-01 09:25:43,890] [Process-4] Run : make_shares at node:3\n",
      "[2024-02-01 09:25:43,899] [Process-4] RunR: builtin_fetch_meta at node:3\n",
      "[2024-02-01 09:25:43,902] [Process-4] Run : make_shares at node:3\n",
      "[2024-02-01 09:25:43,911] [Process-4] RunR: builtin_fetch_meta at node:3\n",
      "[2024-02-01 09:25:43,913] [Process-4] Run : make_shares at node:3\n",
      "[2024-02-01 09:25:43,915] [Process-4] RunR: builtin_fetch_meta at node:3\n",
      "[2024-02-01 09:25:44,071] [Process-1] Run : builtin_spu_run at node:0\n",
      "[2024-02-01 09:25:44,071] [Process-3] Run : builtin_spu_run at node:2\n",
      "[2024-02-01 09:25:44,071] [Process-2] Run : builtin_spu_run at node:1\n",
      "[2024-02-01 09:25:44,074] [Process-4] RunR: builtin_fetch_object at node:3\n",
      "[2024-02-01 09:25:44,074] [Process-4] RunR: builtin_fetch_object at node:3\n",
      "[2024-02-01 09:25:44,074] [Process-4] RunR: builtin_fetch_object at node:3\n",
      "[2024-02-01 09:25:44,079] [Process-4] RunR: builtin_fetch_object at node:3\n",
      "[2024-02-01 09:25:44,080] [Process-4] RunR: builtin_fetch_object at node:3\n",
      "[2024-02-01 09:25:44,082] [Process-4] RunR: builtin_fetch_object at node:3\n",
      "[2024-02-01 09:25:44,083] [Process-4] RunR: builtin_fetch_object at node:3\n",
      "[2024-02-01 09:25:44,085] [Process-4] RunR: builtin_fetch_object at node:3\n",
      "[2024-02-01 09:25:44,087] [Process-4] RunR: builtin_fetch_object at node:3\n",
      "[2024-02-01 09:25:44,164] [Process-1] RunR: builtin_fetch_meta at node:0\n",
      "[2024-02-01 09:25:44,166] [Process-1] RunR: builtin_fetch_object at node:0\n",
      "[2024-02-01 09:25:44,168] [Process-2] RunR: builtin_fetch_object at node:1\n",
      "[2024-02-01 09:25:44,170] [Process-3] RunR: builtin_fetch_object at node:2\n"
     ]
    }
   ],
   "source": [
    "# here, we just use the mock dataset.\n",
    "# user can prepare your dataset: you need to always choose data that is close to reality!\n",
    "# IMPORTANT Note: you should always \"seal\" your data before running in SPU, else spu will treats these data as PUBLIC!!!\n",
    "# ref: https://www.secretflow.org.cn/docs/spu/en/getting_started/quick_start.html#Move-JAX-program-to-SPU\n",
    "\n",
    "# step1: prepare your plaintext dataset\n",
    "x1 = np.random.rand(1000, 40)\n",
    "y = np.random.randint(0, 2, 1000)\n",
    "x2 = np.random.rand(1000, 60)\n",
    "\n",
    "# step2: \"seal\" the data, you can do it by calling emulator.seal().\n",
    "x1, x2, y = emulator.seal(x1, x2, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[2024-02-01 09:25:44,171] Shutdown multiprocess cluster...\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[2024-02-01 09:25:44.162] [info] [api.cc:158] [Profiling] SPU execution run_model completed, input processing took 1.002e-06s, execution took 0.075888372s, output processing took 2.825e-06s, total time 0.075892199s.\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:191] HLO profiling: total time 0.07414353899999998\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - pphlo.add, executed 13 times, duration 0.000262654s, send bytes 0\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - pphlo.broadcast, executed 2 times, duration 9.728e-06s, send bytes 0\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - pphlo.concatenate, executed 2 times, duration 0.002212247s, send bytes 0\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - pphlo.constant, executed 9 times, duration 7.7076e-05s, send bytes 0\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - pphlo.convert, executed 3 times, duration 0.004569468s, send bytes 8008\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - pphlo.dot, executed 21 times, duration 0.009945714s, send bytes 336320\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - pphlo.free, executed 166 times, duration 4.2643e-05s, send bytes 0\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - pphlo.greater, executed 11 times, duration 0.018354569s, send bytes 396000\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - pphlo.less, executed 11 times, duration 0.019382234s, send bytes 396000\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - pphlo.multiply, executed 24 times, duration 0.005808343s, send bytes 258760\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - pphlo.reduce, executed 1 times, duration 0.000103134s, send bytes 0\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - pphlo.reshape, executed 24 times, duration 6.257e-05s, send bytes 0\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - pphlo.rsqrt, executed 1 times, duration 0.004104s, send bytes 596\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - pphlo.select, executed 22 times, duration 0.008470017s, send bytes 528000\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - pphlo.slice, executed 2 times, duration 8.095e-06s, send bytes 0\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - pphlo.subtract, executed 20 times, duration 0.000720948s, send bytes 0\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - pphlo.transpose, executed 1 times, duration 1.0099e-05s, send bytes 0\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:191] HAL profiling: total time 0.071188129\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - _mux, executed 22 times, duration 0.008426795s, send bytes 528000\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - f_add, executed 23 times, duration 0.000266382s, send bytes 0\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - f_less, executed 22 times, duration 0.037681215s, send bytes 792000\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - f_mmul, executed 21 times, duration 0.009836574s, send bytes 336320\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - f_mul, executed 24 times, duration 0.005639675s, send bytes 258760\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - f_rsqrt, executed 1 times, duration 0.004101727s, send bytes 596\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - f_sub, executed 20 times, duration 0.000683186s, send bytes 0\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - int2fxp, executed 1 times, duration 1.3054e-05s, send bytes 0\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - seal, executed 2 times, duration 0.004539521s, send bytes 8008\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:191] MPC profiling: total time 0.07251642100000003\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - a2b, executed 1 times, duration 0.000589902s, send bytes 112\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - add_aa, executed 55 times, duration 0.000533079s, send bytes 0\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - add_ap, executed 112 times, duration 0.00153755s, send bytes 0\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - add_pp, executed 13 times, duration 0.000101801s, send bytes 0\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - and_bb, executed 6 times, duration 0.000402066s, send bytes 44\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - and_bp, executed 18 times, duration 2.2563e-05s, send bytes 0\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - b2a, executed 3 times, duration 0.001647434s, send bytes 248\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - bitrev_b, executed 2 times, duration 3.627e-06s, send bytes 0\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - broadcast, executed 9 times, duration 2.5447e-05s, send bytes 0\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - concatenate, executed 2 times, duration 0.002201156s, send bytes 0\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - extract_slice, executed 17 times, duration 1.9556e-05s, send bytes 0\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - lshift_a, executed 1 times, duration 1.1171e-05s, send bytes 0\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - lshift_b, executed 6 times, duration 5.309e-06s, send bytes 0\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - make_p, executed 93 times, duration 0.000118042s, send bytes 0\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - mmul_aa, executed 20 times, duration 0.006304355s, send bytes 88080\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - mmul_ap, executed 1 times, duration 0.0001168s, send bytes 0\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - msb_a2b, executed 22 times, duration 0.036642897s, send bytes 792000\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - mul_a1b, executed 22 times, duration 0.006894027s, send bytes 528000\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - mul_aa, executed 17 times, duration 0.001905862s, send bytes 8936\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - mul_ap, executed 18 times, duration 0.00018485s, send bytes 0\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - not_a, executed 53 times, duration 0.000614769s, send bytes 0\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - not_p, executed 12 times, duration 8.9018e-05s, send bytes 0\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - p2a, executed 2 times, duration 0.004535274s, send bytes 8008\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - reshape, executed 48 times, duration 7.1412e-05s, send bytes 0\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - rshift_b, executed 18 times, duration 1.2963e-05s, send bytes 0\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - transpose, executed 2 times, duration 9.378e-06s, send bytes 0\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - trunc_a, executed 51 times, duration 0.007892961s, send bytes 498256\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - xor_bb, executed 29 times, duration 2.1249e-05s, send bytes 0\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:194] - xor_bp, executed 1 times, duration 1.903e-06s, send bytes 0\n",
      "[2024-02-01 09:25:44.162] [info] [api.cc:204] Link details: total send bytes 1923684, send actions 416\n"
     ]
    }
   ],
   "source": [
    "# start running program and get results\n",
    "result = emulator.run(run_model)(x1, x2, y)\n",
    "\n",
    "# For safety, can put the program in a try-catch block\n",
    "emulator.down()"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "### Put them together\n",
    "\n",
    "Now we put all these together, we can get a simple paradigm of emulation."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "is_executing": true
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[2024-02-01 09:27:18,572] Start multiprocess cluster...\n",
      "[2024-02-01 09:27:18,610] [Process-16] Starting grpc server at 127.0.0.1:61920\n",
      "[2024-02-01 09:27:18,639] [Process-17] Starting grpc server at 127.0.0.1:61921\n",
      "[2024-02-01 09:27:18,678] [Process-18] Starting grpc server at 127.0.0.1:61922\n",
      "[2024-02-01 09:27:18,707] [Process-19] Starting grpc server at 127.0.0.1:61923\n",
      "[2024-02-01 09:27:18,736] [Process-20] Starting grpc server at 127.0.0.1:61924\n",
      "[2024-02-01 09:27:19,734] [Process-16] Run : builtin_spu_init at node:0\n",
      "[2024-02-01 09:27:19,735] [Process-17] Run : builtin_spu_init at node:1\n",
      "[2024-02-01 09:27:19,735] [Process-18] Run : builtin_spu_init at node:2\n",
      "[2024-02-01 09:27:19,744] [Process-18] spu-runtime (SPU) initialized\n",
      "[2024-02-01 09:27:19,744] [Process-16] spu-runtime (SPU) initialized\n",
      "[2024-02-01 09:27:19,744] [Process-17] spu-runtime (SPU) initialized\n",
      "[2024-02-01 09:27:19,751] [Process-19] Run : <lambda> at node:3\n",
      "[2024-02-01 09:27:19,756] [Process-19] Run : <lambda> at node:3\n",
      "[2024-02-01 09:27:19,758] [Process-19] Run : <lambda> at node:3\n",
      "[2024-02-01 09:27:19,764] [Process-19] Run : make_shares at node:3\n",
      "[2024-02-01 09:27:19,773] [Process-19] RunR: builtin_fetch_meta at node:3\n",
      "[2024-02-01 09:27:19,776] [Process-19] Run : make_shares at node:3\n",
      "[2024-02-01 09:27:19,785] [Process-19] RunR: builtin_fetch_meta at node:3\n",
      "[2024-02-01 09:27:19,788] [Process-19] Run : make_shares at node:3\n",
      "[2024-02-01 09:27:19,789] [Process-19] RunR: builtin_fetch_meta at node:3\n",
      "[2024-02-01 09:27:19,875] [Process-16] Run : builtin_spu_run at node:0\n",
      "[2024-02-01 09:27:19,875] [Process-17] Run : builtin_spu_run at node:1\n",
      "[2024-02-01 09:27:19,875] [Process-18] Run : builtin_spu_run at node:2\n",
      "[2024-02-01 09:27:19,879] [Process-19] RunR: builtin_fetch_object at node:3\n",
      "[2024-02-01 09:27:19,879] [Process-19] RunR: builtin_fetch_object at node:3\n",
      "[2024-02-01 09:27:19,879] [Process-19] RunR: builtin_fetch_object at node:3\n",
      "[2024-02-01 09:27:19,884] [Process-19] RunR: builtin_fetch_object at node:3\n",
      "[2024-02-01 09:27:19,887] [Process-19] RunR: builtin_fetch_object at node:3\n",
      "[2024-02-01 09:27:19,887] [Process-19] RunR: builtin_fetch_object at node:3\n",
      "[2024-02-01 09:27:19,890] [Process-19] RunR: builtin_fetch_object at node:3\n",
      "[2024-02-01 09:27:19,892] [Process-19] RunR: builtin_fetch_object at node:3\n",
      "[2024-02-01 09:27:19,893] [Process-19] RunR: builtin_fetch_object at node:3\n",
      "I0201 09:27:19.740740 1481313 external/com_github_brpc_brpc/src/brpc/server.cpp:1158] Server[yacl::link::transport::internal::ReceiverServiceImpl] is serving on port=61930.\n",
      "W0201 09:27:19.740760 1481313 external/com_github_brpc_brpc/src/brpc/server.cpp:1164] Builtin services are disabled according to ServerOptions.has_builtin_services\n",
      "I0201 09:27:19.741360 1481314 external/com_github_brpc_brpc/src/brpc/server.cpp:1158] Server[yacl::link::transport::internal::ReceiverServiceImpl] is serving on port=61931.\n",
      "I0201 09:27:19.741381 1481319 external/com_github_brpc_brpc/src/brpc/server.cpp:1158] Server[yacl::link::transport::internal::ReceiverServiceImpl] is serving on port=61932.\n",
      "W0201 09:27:19.741398 1481314 external/com_github_brpc_brpc/src/brpc/server.cpp:1164] Builtin services are disabled according to ServerOptions.has_builtin_services\n",
      "W0201 09:27:19.741400 1481319 external/com_github_brpc_brpc/src/brpc/server.cpp:1164] Builtin services are disabled according to ServerOptions.has_builtin_services\n",
      "[2024-02-01 09:27:19,952] [Process-16] RunR: builtin_fetch_meta at node:0\n",
      "[2024-02-01 09:27:19,954] [Process-16] RunR: builtin_fetch_object at node:0\n",
      "[2024-02-01 09:27:19,956] [Process-17] RunR: builtin_fetch_object at node:1\n",
      "[2024-02-01 09:27:19,957] [Process-18] RunR: builtin_fetch_object at node:2\n",
      "[2024-02-01 09:27:19,959] Shutdown multiprocess cluster...\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[2024-02-01 09:27:19.949] [info] [api.cc:158] [Profiling] SPU execution run_model completed, input processing took 1.232e-06s, execution took 0.054217746s, output processing took 3.958e-06s, total time 0.054222936s.\n",
      "[2024-02-01 09:27:19.949] [info] [api.cc:191] HLO profiling: total time 0.05285722200000001\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - pphlo.add, executed 8 times, duration 0.000199415s, send bytes 0\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - pphlo.broadcast, executed 2 times, duration 1.2654e-05s, send bytes 0\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - pphlo.concatenate, executed 2 times, duration 0.002178695s, send bytes 0\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - pphlo.constant, executed 9 times, duration 7.537e-05s, send bytes 0\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - pphlo.convert, executed 3 times, duration 0.001068422s, send bytes 8008\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - pphlo.dot, executed 11 times, duration 0.007380437s, send bytes 197736\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - pphlo.free, executed 101 times, duration 3.3922e-05s, send bytes 0\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - pphlo.greater, executed 6 times, duration 0.012862951s, send bytes 216000\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - pphlo.less, executed 6 times, duration 0.013588688s, send bytes 216000\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - pphlo.multiply, executed 14 times, duration 0.004459273s, send bytes 131408\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - pphlo.reduce, executed 1 times, duration 8.5792e-05s, send bytes 0\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - pphlo.reshape, executed 14 times, duration 4.5887e-05s, send bytes 0\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - pphlo.rsqrt, executed 1 times, duration 0.004265575s, send bytes 548\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - pphlo.select, executed 12 times, duration 0.006091525s, send bytes 288000\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - pphlo.slice, executed 2 times, duration 1.1561e-05s, send bytes 0\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - pphlo.subtract, executed 10 times, duration 0.000488038s, send bytes 0\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - pphlo.transpose, executed 1 times, duration 9.017e-06s, send bytes 0\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:191] HAL profiling: total time 0.05006560299999999\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - _mux, executed 12 times, duration 0.006062474s, send bytes 288000\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - f_add, executed 18 times, duration 0.000205463s, send bytes 0\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - f_less, executed 12 times, duration 0.026415703s, send bytes 432000\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - f_mmul, executed 11 times, duration 0.007306253s, send bytes 197736\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - f_mul, executed 14 times, duration 0.004294426s, send bytes 131408\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - f_rsqrt, executed 1 times, duration 0.004261338s, send bytes 548\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - f_sub, executed 10 times, duration 0.000464667s, send bytes 0\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - int2fxp, executed 1 times, duration 1.3035e-05s, send bytes 0\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - seal, executed 2 times, duration 0.001042244s, send bytes 8008\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:191] MPC profiling: total time 0.051588295000000006\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - a2b, executed 1 times, duration 0.000644164s, send bytes 112\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - add_aa, executed 35 times, duration 0.000403726s, send bytes 0\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - add_ap, executed 62 times, duration 0.00117355s, send bytes 0\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - add_pp, executed 8 times, duration 7.6896e-05s, send bytes 0\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - and_bb, executed 6 times, duration 0.000362704s, send bytes 44\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - and_bp, executed 18 times, duration 1.5129e-05s, send bytes 0\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - b2a, executed 3 times, duration 0.001573765s, send bytes 248\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - bitrev_b, executed 2 times, duration 3.447e-06s, send bytes 0\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - broadcast, executed 9 times, duration 2.5578e-05s, send bytes 0\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - concatenate, executed 2 times, duration 0.002168526s, send bytes 0\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - extract_slice, executed 17 times, duration 1.6162e-05s, send bytes 0\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - lshift_a, executed 1 times, duration 1.097e-05s, send bytes 0\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - lshift_b, executed 6 times, duration 3.838e-06s, send bytes 0\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - make_p, executed 58 times, duration 6.9865e-05s, send bytes 0\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - mmul_aa, executed 10 times, duration 0.004471894s, send bytes 44040\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - mmul_ap, executed 1 times, duration 0.000114846s, send bytes 0\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - msb_a2b, executed 12 times, duration 0.025636552s, send bytes 432000\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - mul_a1b, executed 12 times, duration 0.004895802s, send bytes 288000\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - mul_aa, executed 12 times, duration 0.000638172s, send bytes 4896\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - mul_ap, executed 13 times, duration 0.000139726s, send bytes 0\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - not_a, executed 28 times, duration 0.00045232s, send bytes 0\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - not_p, executed 7 times, duration 7.8808e-05s, send bytes 0\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - p2a, executed 2 times, duration 0.001038206s, send bytes 8008\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - reshape, executed 28 times, duration 4.703e-05s, send bytes 0\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - rshift_b, executed 18 times, duration 1.1441e-05s, send bytes 0\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - transpose, executed 2 times, duration 8.727e-06s, send bytes 0\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - trunc_a, executed 31 times, duration 0.007485734s, send bytes 280352\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - xor_bb, executed 29 times, duration 1.6449e-05s, send bytes 0\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:194] - xor_bp, executed 1 times, duration 4.268e-06s, send bytes 0\n",
      "[2024-02-01 09:27:19.950] [info] [api.cc:204] Link details: total send bytes 1057700, send actions 251\n"
     ]
    }
   ],
   "source": [
    "###########################################################################\n",
    "# 0). Import library & define running function used by emulator\n",
    "###########################################################################\n",
    "import sml.utils.emulation as emulation\n",
    "\n",
    "\n",
    "# normally, we will import a Model that we have tested in simulator, e.g:\n",
    "# from model import Model\n",
    "\n",
    "\n",
    "def run_model(x1, x2, y):\n",
    "    x = jnp.concatenate((x1, x2), axis=1)\n",
    "    y = y.reshape((y.shape[0], 1))\n",
    "\n",
    "    model = SSLRSGDClassifier(\n",
    "        epochs=5,\n",
    "        learning_rate=0.1,\n",
    "        batch_size=2048,\n",
    "        sig_type='t1',\n",
    "        eps=1e-4,\n",
    "        dk_method='rsqrt',\n",
    "    )\n",
    "\n",
    "    model.fit(x, y)\n",
    "    return model.predict_proba(x)\n",
    "\n",
    "\n",
    "###########################################################################\n",
    "# 2). Define running config and run emulations\n",
    "###########################################################################\n",
    "#  Set mode to MULTIPROCESS for LAN test.\n",
    "mode = emulation.Mode.MULTIPROCESS  # emulation.Mode.DOCKER for docker not supported yet\n",
    "\n",
    "# bandwidth and latency only work for docker mode\n",
    "emulator = emulation.Emulator(\n",
    "    emulation.CLUSTER_ABY3_3PC, mode, bandwidth=100, latency=10\n",
    ")\n",
    "\n",
    "# For safety, it's a good practice that putting the running part in a try-catch block\n",
    "try:\n",
    "    # start up the running processes\n",
    "    emulator.up()\n",
    "\n",
    "    # prepare your dataset here.\n",
    "    #   a. Normally, you should choose your dataset carefully. e.g. for lr,\n",
    "    # we need to examine the performance on imbalanced, tail-heavy(or real dataset if possible) datasets.\n",
    "    #   b. If you just want to get some efficiency number, we have some mock apis to produce dataset(check `examples.python.utils.dataset_utils`).\n",
    "    #   c. IMPORTANT NOTE: MUST make sure your data has been \"sealed\" BEFORE running the program! (call emulator.seal())\n",
    "    x1 = np.random.rand(1000, 40)\n",
    "    y = np.random.randint(0, 2, 1000)\n",
    "    x2 = np.random.rand(1000, 60)\n",
    "    x1, x2, y = emulator.seal(x1, x2, y)\n",
    "\n",
    "    # magic happens here! running the program in emulator like SPU\n",
    "    result = emulator.run(run_model)(x1, x2, y)\n",
    "except Exception as e:\n",
    "    print(e)\n",
    "finally:\n",
    "    emulator.down()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "new_sf",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.18"
  },
  "vscode": {
   "interpreter": {
    "hash": "2cbe093a14a4c28eeca1f1e06597ee6d950d8ff7968d59e0b42df2ea4ce5b8a9"
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
